Java JList 不显示元素
Java JList doesn't show elements
我有一个 JList,它应该显示学校测试列表。当我在 Swing Designer 中向此列表添加值时,它会正确显示所有内容,但当我尝试显示我自己的数据时,它仍然显示在 Swing Designer 中初始化的值。如何在JList中显示自己的一组数据?我对代码的初始更新:
public void updateFrame(MainFrame mainFrame)
{
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(int i = 0 ; i < this.getTestList().size() ; i++)
listModel.add(i, this.getTestList().get(i));
JList<Test> currList = new JList<>(listModel);
currList.setVisible(true);
mainFrame.setList(currList);
mainFrame.getList().setVisible(true);
}
此外,我的 ListListener 在任何时候都不会激活,但这是另一个问题,也许在第一个之后更容易弄清楚。
class ListListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(Test test : model.getTestList())
listModel.addElement(test);
JList<Test> currList = new JList<Test>(listModel);
mainFrame.setList(currList);
}
}
同样,不要交换组件,而是交换模型,例如:
public void updateFrame(MainFrame mainFrame) {
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(int i = 0 ; i < this.getTestList().size() ; i++) {
listModel.add(i, this.getTestList().get(i));
}
// ***** get rid of this *****
// JList<Test> currList = new JList<>(listModel);
// currList.setVisible(true);
// mainFrame.setList(currList);
// ***** and instead simply do this *****
mainFrame.getList().setModel(listModel);
}
如果这不起作用,那么可以,创建并 post 您的 MCVE
我有一个 JList,它应该显示学校测试列表。当我在 Swing Designer 中向此列表添加值时,它会正确显示所有内容,但当我尝试显示我自己的数据时,它仍然显示在 Swing Designer 中初始化的值。如何在JList中显示自己的一组数据?我对代码的初始更新:
public void updateFrame(MainFrame mainFrame)
{
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(int i = 0 ; i < this.getTestList().size() ; i++)
listModel.add(i, this.getTestList().get(i));
JList<Test> currList = new JList<>(listModel);
currList.setVisible(true);
mainFrame.setList(currList);
mainFrame.getList().setVisible(true);
}
此外,我的 ListListener 在任何时候都不会激活,但这是另一个问题,也许在第一个之后更容易弄清楚。
class ListListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(Test test : model.getTestList())
listModel.addElement(test);
JList<Test> currList = new JList<Test>(listModel);
mainFrame.setList(currList);
}
}
同样,不要交换组件,而是交换模型,例如:
public void updateFrame(MainFrame mainFrame) {
DefaultListModel<Test> listModel = new DefaultListModel<Test>();
for(int i = 0 ; i < this.getTestList().size() ; i++) {
listModel.add(i, this.getTestList().get(i));
}
// ***** get rid of this *****
// JList<Test> currList = new JList<>(listModel);
// currList.setVisible(true);
// mainFrame.setList(currList);
// ***** and instead simply do this *****
mainFrame.getList().setModel(listModel);
}
如果这不起作用,那么可以,创建并 post 您的 MCVE