ListSelectionListener不改变面板
问题描述:
我想要一个ListSelectionListener事件来更改一个jpanel,我知道它正在被正确触发,因为print语句正在工作,但面板根本不会改变。ListSelectionListener不改变面板
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();
}
}
我扔在第二重绘,只是因为我是出来的东西去尝试,但它仍然当您添加组件可见GUI的基本逻辑是没有工作
答
:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
基本上所有组件的大小都是(0,0),因此在创建时没有任何东西需要绘制。您需要调用revalidate()
,以便布局管理器可以为组件提供面板上的大小和位置。
谢谢你这个工作,所以如果我有这个权利,jlabel会显示当侦听器被解雇,但因为它是大小(0,0)它只是不可见,这是唯一的问题吗? – Joking313