2013-04-13 4 views
1

У меня есть JTabbedPane, который выглядит следующим образом:JComponent Не Перекрасьте

overview= new JTabbedPane(); 

      JComponent accountinfo= AccountOverview(guest.toString()); 
      overview.addTab ("Account Overview", accountinfo); 
      overview.setMnemonicAt(0, KeyEvent.VK_1); 

      JComponent flightoption= FlightOptions(); 
      overview.addTab ("Book a Flight",flightoption); 
      overview.setMnemonicAt(1, KeyEvent.VK_2); 

      JFrame tabbed= new JFrame("AIR Reservation"); 
      tabbed.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      tabbed.add(overview); 
      tabbed.setSize(650,500); 
      tabbed.setLocationRelativeTo(null); 
      tabbed.setVisible(true); 

мой метод AccountOverview выглядит следующим образом:

protected JComponent AccountOverview (String text) 
{ 
    panel = new JPanel(false); 
    JLabel filler = new JLabel(text); 

    JButton editName= new JButton ("Edit Name"); 
    editName.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       JFrame nameframe= new JFrame("Name Edit"); 
       name2 = JOptionPane.showInputDialog(nameframe, "Change name to: "); 
       guest.setName(name2); 
      } 
     }); 
    JButton editGender= new JButton ("Edit Gender"); 
    editGender.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       JFrame genderframe= new JFrame("Gender Edit"); 
       gen2 = JOptionPane.showInputDialog(genderframe, "Change gender to: "); 
       guest.setGender(gen2); 
      } 
     }); 
    JButton editBirthday= new JButton ("Edit Birthday"); 
    editBirthday.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       JFrame birthdayframe= new JFrame("Birthdate Edit"); 
       birthday2 = JOptionPane.showInputDialog(birthdayframe, "Change birthdate to: "); 
       guest.setBirthDate(birthday2); 
      } 
     }); 
    JButton editPassportNumber= new JButton ("Edit Passport Number"); 
    editPassportNumber.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       JFrame passportframe= new JFrame("Passport Number Edit"); 
       passnum2= Integer.parseInt(JOptionPane.showInputDialog(passportframe, "Change passport number to: ")); 
       guest.setPassportNumber(passnum2); 
      } 
     }); 

    panel.add(editName); 
    panel.add(editGender); 
    panel.add(editBirthday); 
    panel.add(editPassportNumber); 
    panel.add(destination); 
    filler.setHorizontalAlignment(JLabel.CENTER); 
    panel.add(filler); 

    return panel; 
} 

Я хочу JLabel, который отображается на JComponent на чтобы обновить информацию при нажатии «Редактировать имя», «Изменить пол» и т. д. Я не могу заставить JPanel перекрасить себя. Как отредактированный код будет выглядеть так, чтобы отображаемая информация обновлялась?

ответ

1

Это действительно просто. Я продемонстрирую с помощью кнопки fisrt.

final JLabel filler = new JLabel(text); 

Переменная должна быть объявлена ​​окончательной, чтобы использовать ее в анонимном ActionListener.

JButton editName= new JButton ("Edit Name"); 
editName.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      JFrame nameframe= new JFrame("Name Edit"); 
      name2 = JOptionPane.showInputDialog(nameframe, "Change name to: "); 
      guest.setName(name2); 
      filler.setText(guest.toString()) 
     } 
    }); 

Если вы вызываете setText внутри слушателя, информация в вашем JLabel будет обновляться автоматически.

+0

Большое вам спасибо! Я пытался понять эту проблему в течение столь длительного времени, и я мог найти только сложные ответы. Ваш ответ был прост, но так быстро поставил мою проблему :) – nichi

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