仅在更改JFrame的大小后更新视图

时间:2010-11-19 21:28:27

标签: java swing jframe

所以我有一个JFrame,里面有一个JScrollPane,在JScrollPane里面我有一个JPanel。我有一个按钮单击鼠标侦听器,它修改JScrollPane中的JPanel。鼠标侦听器中的代码是:

@Override
    public void mouseClicked(MouseEvent arg0) {

            searchResult.updateInfo();

        }

updateInfo方法将一堆JPanel添加到searchResult JPanel中。单击与此侦听器关联的按钮后,没有任何反应,但是当我调整JFrame的大小时...它会更新视图..为什么会这样?

我尝试重绘JFrame,但它没有解决我的问题

2 个答案:

答案 0 :(得分:2)

在可见GUI中添加/删除组件后,您需要告诉面板布置组件,以便重新计算首选大小。你需要添加:

searchResult.revalidate();
searchResult.repaint(); // sometimes needed

然后,如果首选大小大于滚动窗格的大小,则会出现滚动条。

答案 1 :(得分:0)

make searchResult.removeAll(); searchResult.updateInfo(); searchResult.validate(); 如果它不起作用就像这样 searchResult.removeAll(); searchResult.updateInfo(); searchResult.validate(); searchResult.repaint();