ListSelectionListener 不更改面板

ListSelectionListener not changing panel

我想要一个 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();
        }
    }

我进行了第二次重绘,只是因为我没有办法尝试,但它仍然没有用。

当您将组件添加到可见 GUI 时,基本逻辑是:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

基本上所有组件在创建时的大小都是 (0, 0) 所以没有什么可以绘制的。您需要调用 revalidate() 以便布局管理器可以为组件指定面板上的大小和位置。