2014-12-23 1 views
0

Мне нужно запрограммировать такое поведение: из основного фрейма с buttonlistener Открываем окно истории (jDialog? JFrame?). Это окно «история» должно выполнить запрос к базе данных с параметром (Param) , переданным из главного окна и отображающим результаты при открытии.Передача значений в jDialog и запуск proc при открытии

Таким образом, я создал DlgHistory с помощью iParam и метода для его настройки. Но где я должен запускать свою процедуру getHistory? Если я поставил его в конце "общественного DlgHistory()" - это работает, прежде чем setParam, так iParam пуст (хотя установлен правильно позже)

вызова окна:

JButton btnHistory = new JButton("History"); 
btnHistory.setBounds(176, 413, 113, 23); 
frame.getContentPane().add(btnHistory); 
btnHistory.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
    System.out.println("Running history"); 
    DlgHistory Hist= new DlgHistory(); 
    Hist.setParam(iParam); 
    Hist.setVisible(true); 
}); 

История JDialog:

public class DlgHistory extends JDialog { 

    private final JPanel contentPanel = new JPanel(); 
    private int iParam; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     try { 
      DlgHistory dialog = new DlgHistory(); 
      dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
      dialog.setVisible(true); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    /** 
    * Create the dialog. 
    */ 
    public DlgHistory() { 
     setBounds(100, 100, 450, 300); 
     getContentPane().setLayout(new BorderLayout()); 
     contentPanel.setLayout(new FlowLayout()); 
     contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     getContentPane().add(contentPanel, BorderLayout.CENTER); 
     { 
      // buttons definitions 
     } 
     // This proc should run after setParam 
     getHistory(iParam); 
    } 
    public void setParam(int Param){ 
     System.out.println("Setting param" + Param); 
     this.iParam = Param; 
    } 

    private void getHistory(int iParam) { 
     System.out.println(" run query with param: " " + iParam); 
     // run query 
    } 

} 
+0

имеют экземпляр класса брокера с методом, который будет выполнять ваши запросы и операции набора результатов ... а затем вызовите диалог с набором параметров, который будет результатом предыдущей функции. – caniaskyouaquestion

ответ

0
JButton btnHistory = new JButton("History"); 
btnHistory.setBounds(176, 413, 113, 23); 
frame.getContentPane().add(btnHistory); 
btnHistory.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
    System.out.println("Running history"); 
    //Some function that will do your query 
    iParam=somefunction(); 
    DlgHistory Hist= new DlgHistory(iParam); 
    Hist.setVisible(true); 
}); 

и внести изменения в DlgHistory конструктор и делать с ним то, что вы изначально сделали

+0

thanx! И со стороны dlgHistory? Как он узнает, что у него есть параметр? Могу ли я сконцентрировать всю логику внутри dlgHist, потому что мне нужно будет заполнить jTable из результатов запроса и может быть повторно запрошен запрос изнутри? – Jarilo

+0

ОК! Я нашел это! Thanx, он работает – Jarilo

 Смежные вопросы

  • Нет связанных вопросов^_^