所以我有一个JFrame,里面有一个JScrollPane,在JScrollPane里面我有一个JPanel。我有一个按钮单击鼠标侦听器,它修改JScrollPane中的JPanel。鼠标侦听器中的代码是:
@Override
public void mouseClicked(MouseEvent arg0) {
searchResult.updateInfo();
}
updateInfo方法将一堆JPanel添加到searchResult JPanel中。单击与此侦听器关联的按钮后,没有任何反应,但是当我调整JFrame的大小时...它会更新视图..为什么会这样?
我尝试重绘JFrame,但它没有解决我的问题
答案 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();