ListSelectionListener不更改面板

时间:2017-04-02 23:49:44

标签: java swing listselectionlistener

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

我投入了第二次重绘只是因为我没有尝试的东西,但它仍然没有用。

1 个答案:

答案 0 :(得分:2)

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

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

基本上所有组件在创建时都具有(0,0)的大小,因此无需绘制任何内容。您需要调用revalidate(),以便布局管理器可以在面板上为组件提供大小和位置。