我正在尝试在多个窗口上更新JList
。我怎样才能做到这一点?
这是我的代码,请帮助我。
samplListModel = new DefaultListModel<String>();
sampleList = new JList<String>(samplListModel);
samplListModel.addElement("Cities");
cityField = new JTextField();
cityField.setColumns(10);
cityButton = new JButton("Update");
JPanel panel = new JPanel();
panel.add(sampleList);
panel.add(cityField);
panel.add(cityButton);
this.add(panel);
this.setSize(500, 400);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
cityButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
samplListModel.addElement(cityField.getText());
cityField.setText("");
}
});
答案 0 :(得分:2)
只需使用相同的 DefaultListModel
{/ 1>}({1}}(意思是两个)每个窗口。在下面的示例中,我使用JList
您可以键入内容,按Enter键,您将看到两个列表都已更新。对此并不多。
JDialog
答案 1 :(得分:1)
您必须对两个ListModel
使用相同的JList
才能使列表保持同步。例如,您可以创建一个扩展DefaultListModel<String>
的类并将其实现为单例。例如:
class MyListModel extends DefaultListModel<String> {
/**
* The one and only instance of the class.
*/
private static final MyListModel INSTANCE = new MyListModel();
/**
* We don't want any other instantiations. Hence make the constructor private.
*/
private MyListModel() { }
/**
* Getter for the instance of this class.
*
* @return the instance of this class
*/
public static MyListModel getInstance() {
return INSTANCE;
}
}
然后你将使用单身人士创建JList
:
sampleList = new JList<String>(MyListModel.getInstance());
对于ListModel
上的所有其他操作,您也必须使用MyListModel.getInstance()
。