2013-07-18 2 views
0

Я пытаюсь добраться до панелей, чтобы работать друг с другом РЕЗУЛЬТАТИВНО.ActionListener Анонимный класс между двумя JPanel

Когда я на главном GUI у меня есть первое JPanel с помощью кнопки Добавить клиент, Появившегося это подводит меня к JPanel с формой, а затем я выздороветь эти ценности, и отпустите их в JTable в первом графическом интерфейсе JPanel.

Когда я затем попытаюсь вставить вторую запись. Я получаю пустой графический интерфейс. Я не слишком уверен, что я делаю неправильно. Как я могу реализовать многократное повторение одного и того же действия? Который загружает форму, вводит информацию, нажимает ее на таблицу, и процесс повторяет столько, сколько мне нужно.

Это объявление кнопку Add Client в главном GUI

Button btn_AddClient = new Button("Add Client"); 
     btn_AddClient.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       panel.setVisible(false); 
       contentPane.setVisible(false); 
       setContentPane(contentPaneClient); 
      } 
     }); 
     btn_AddClient.setBounds(259, 12, 70, 22); 
     contentPane.add(btn_AddClient); 

Это кнопка Добавить Формы во второй панели

JButton btnAdd = new JButton("Add"); 
     btnAdd.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent arg0) { 


       setContentPane(contentPaneClient); 
       panel.setVisible(true); 
       contentPane.setVisible(true); 
       contentPaneClient.setVisible(false); 
       LigneJTab l = new LigneJTab(textFieldPrenomClient.getText(),textFieldNomClient.getText(), textFieldAdresseClient.getText(), chckbxHomme.isSelected(), Sport.FOOTBALL); 
       myModel.addLine(l); 
       setContentPane(contentPane); 
      } 
     }); 
     btnAdd.setBounds(263, 40, 117, 29); 
     contentPaneClient.add(btnAdd); 
+5

1- я быть очень осторожным о смешивании AWT и Swing-компонентов ('Button' и' JButton'), 2. Избегайте использования 'setBounds', используйте соответствующие менеджеры компоновки, 3- Взгляните на [' CardLayout'] (http://docs.oracle.com/javase/tutorial/uiswing /layout/card.html), что значительно упростит обмен между различными представлениями. 4. Попробуйте предоставить [SSCCE] (http://sscce.org/), поскольку фрагменты кода не обеспечивают достаточного контекста. – MadProgrammer

+0

Посмотрите на SSCCE поскольку это один из мои первые сообщения в Java. Почему смешивает AWT и Swing плохую идею? – hayonj

+0

Код слишком длинный, чтобы обеспечить SSCCE, и он содержит несколько других классов. – hayonj

ответ

0
JButton btnAdd = new JButton("Add"); 
    btnAdd.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent arg0) { 

      //setContentPane(contentPaneClient); 
      //panel.setVisible(true); 
      //contentPane.setVisible(true); 
      //contentPaneClient.setVisible(false); 

      LigneJTab l = new LigneJTab(textFieldPrenomClient.getText(),textFieldNomClient.getText(), textFieldAdresseClient.getText(), chckbxHomme.isSelected(), Sport.FOOTBALL); 
      myModel.addLine(l); 

      panel.setVisible(true); 
      contentPane.setVisible(true); 
      setContentPane(contentPane); 

     } 
    }); 
    btnAdd.setBounds(263, 40, 117, 29); 
    contentPaneClient.add(btnAdd); 

комментируемые верхнюю часть и добавил setContentPane(contentPane); и это сработало!

Спасибо!

0

Другая идея: вам не нужно менять области содержимого, чтобы запрашивать данные. Более элегантный способ заключается в использовании модального диалогового окна. Для того, чтобы сделать один, первый создать диалоговый класс:

public class MyDialog extends JDialog { 
    public MyDialog(Frame parent) { 
     super(parent); 
     setModalityType(Dialog.ModalityType.APPLICATION_MODAL); 
     // add components to getContentPane() 
     // to close dialog, use setVisible(false) in listeners 
    } 

    public OutputData getData() { 
     OutputData data = new OutputData(); 
     show(); 
     // show only returns after a setVisible(false) 
     data.field = textField.getText(); 
     // for example, repeat as many times as necessary 
     return data; 
    } 
} 

Чтобы вызвать этот диалог из JFrame, используйте следующий код:

MyDialog dialog = new MyDialog(this); 
OutputData data = dialog.getData() 
// now retrieve fields from data 
+0

Wow, который выглядит интересным ... его трудно следить за тем, как все работает, исходя из фона javascript, где все не набирается и поэтому процедурный .... java полностью объектно ориентирован, и ему сложно следовать всем этим классам и сколько делать ... все адаптеры и термины, такие как общие классы .... подклассы или внутренние классы ... Я нахожу это трудно следовать переменной, как .... Контекстный контекст ..... родительский ... это .. различия между интерфейсом и абстрактными классами .... любые рекомендации для хороших сайтов для крайне медленных новичков? – hayonj

+0

Это не работает, я краснею повсюду. Что я не делаю правильно? Http: // pastebin.com/LPYztq7Z – hayonj

+0

Вы ничего не делаете неправильно. Я не знаю, почему это не работает, но я могу обновить это. – tbodt

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