use*_*304 3 java swing resize refresh jcomponent
我试图弄清楚当我手动拖动窗口时我的JComponent刷新的原因,但是当我调用repaint或revalidate时它不会刷新.数据已准备好显示,但只有在我手动调整大小后才会显示.任何人都能提出一些关于我能做什么的建议,或者这听起来好像不是Swing问题,因为我尝试重新绘制并重新验证?
我注意到的一件奇怪的事情是,如果我有这个代码:
sp.setSize(sp.getSize().width, sp.getSize().height+1);
sp.setSize(sp.getSize().width, sp.getSize().height-1);
Run Code Online (Sandbox Code Playgroud)
如果使用第一行,则JComponent将刷新自身.如果我不使用这两行或两者都不会,这对我来说似乎很奇怪.
我基本上只是将JPanel放在JDesktopPane中的JInternalFrame中.我正在尝试做的事情有两个主要功能.一个添加新的JPanel,另一个尝试刷新它,以便新数据显示:
public void addNewSP()
{
sp = new JInternalFrame("SP");
sp.setClosable(true);
sp.setLocation(700, 400); //this should be changed to something based on screen size
sp.setResizable(true);
sp.add(popUp);
this.parentContainer.add(sp, JLayeredPane.DRAG_LAYER);
sp.pack();
sp.show();
sp.setSize(500, 500);
sp.setPreferredSize(new Dimension(500, 500));
}
public void refreshSP()
{
sp.repaint();
sp.validate();
sp.repaint();
sp.validate();
parentContainer.validate();
parentContainer.repaint();
sp.setSize(sp.getSize().width, sp.getSize().height+1);
sp.setSize(sp.getSize().width, sp.getSize().height-1);
}
}
Run Code Online (Sandbox Code Playgroud)
BTW parentContainer是JDesktopPane
| 归档时间: |
|
| 查看次数: |
5959 次 |
| 最近记录: |