我想要一个ListSelectionListener事件来更改JPanel。我知道它正在被解雇,因为print语句正在工作,但是面板根本没有改变。
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();
}
}
我投入了第二次重绘只是因为我没有尝试的东西,但它仍然没有用。
答案 0 :(得分:2)
将组件添加到可见GUI时,基本逻辑是:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
基本上所有组件在创建时都具有(0,0)的大小,因此无需绘制任何内容。您需要调用revalidate()
,以便布局管理器可以在面板上为组件提供大小和位置。