我在Swing中设计了一个GUI,其中包含了所有组件。例如,我有一个带有JList和JTextField的JComboBox,
当我从JComboBox中选择一个不同的项时,我试图使用ListSelectionListener来调用子类中的方法,以根据选择更新JTextField,
我该如何正确地做到这一点?如何调用子类,然后从子类更新GUI对象的值?
答案 0 :(得分:1)
public class Parent {
private void init() {
// ...
combo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object selected = combo.getSelectedItem();
textField.setText(getTextBasedOnSelection(selected));
}
});
// ...
}
/**
* Returns the text to display when the given object is selected.
* Subclasses may override this method to display what they want
*/
protected String getTextBasedOnSelection(Object selected) {
return selected.toString();
}
// ...
}
答案 1 :(得分:1)
我希望我能解决你的问题。您有一个包含多个子视图的视图组件,并且您希望更新一个子视图,因为在另一个子视图中进行了更改。
因此,您在主视图中为组合框编写了一个动作侦听器:
comboBox.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
textField.setText(comboBox.getSelectedItem());
}
});
答案 2 :(得分:1)
我建议应用Mediator pattern而不是直接互连组件: 创建JPanel的子类(例如XyzPane),放置所有组件。此类成为Mediator。它