【发布时间】:2011-07-28 15:35:03
【问题描述】:
我创建了一个 JDialog,其中包含一个 JComboBox 和一个面板,该面板下方应根据 JComboBox 中选择的值显示不同的内容。我创建了一个 JPanel (panel_1),它被添加到对话框的内容窗格中,并为 JComboBox 中的每个可能项目创建了一个附加 JPanel(例如 panel_item_1 和 panel_item_2,如果它只有 2 个项目)。我在 JComboBox 中附加了以下侦听器类:
public class SelectedListener implements ActionListener {
private SettingsDialog dialog;
public SelectedListener(SettingsDialog dialog){
this.dialog = dialog;
}
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
String selected_settings = (String)cb.getSelectedItem();
if(selected_settings.compareTo("Option 1") == 0){
dialog.panel_1 = dialog.panel_item_1;
dialog.panel_1.updateUI();
}else if(selected_settings.compareTo("Option 2") == 0 ){
dialog.panel_1 = dialog.panel_item_2;
dialog.panel_1.updateUI();
}
}
}
但是,这不会使面板更新为新内容。有什么建议吗?提前致谢
【问题讨论】:
-
用
validate()代替updateUI()怎么样? -
永远不会在应用程序代码中调用 updateUI 来“更新”任何内容,该方法独家供 LAF 使用
-
我瞎了,还是 if 和 else-if 的条件完全一样?
-
是的,kleopatra,这是一个错误,但改变它仍然不能解决问题
-
没说会 - Rob (@camickr) 发现了真正的问题 ;-) 并删除了那些 updateUI 调用 - never 帮助
标签: java swing jpanel jcombobox jdialog