我想要一个ListSelectionListener事件来更改一个JPanel。我知道它被正确地触发了,因为打印语句是工作的,但是面板一点也不改变。
DefaultListModel leftList = new DefaultListModel();
JList order = new JList(leftList);
order.addListSelectionListener(this);
JPanel configPanel = new JPanel();
public void valueChanged(ListSelectionEvent e) {
if(e.getValueIsAdjusting()){
int index = order.getSelectedIndex();
System.out.println(leftList.getElementAt(index).toString());
configPanel.removeAll();
configPanel.repaint();
configPanel.add(new JLabel("nice"));
configPanel.repaint();
}
}我投入了第二次重新油漆仅仅是因为我没有东西去尝试,但它仍然没有工作。
发布于 2017-04-02 23:51:51
将组件添加到可见GUI时,基本逻辑是:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();基本上,在创建组件时,所有组件的大小都为(0,0),因此没有什么可绘制的。您需要调用revalidate(),这样布局管理器就可以为组件提供面板上的大小和位置。
https://stackoverflow.com/questions/43174781
复制相似问题