问题描述
|
我正在使用intellij与swing。
我的应用程序在具有不同监视器的不同计算机上运行。
我想以不同的尺寸显示我的表格。
我在intellij gui编辑器中将JPanel(不是main。inner jpanel)设置为(-1,670)。
我尝试使用以下代码进行更改:
MyFormUI myform = new MyFormUI();
if (thisIsTheCase){
myform.setLongView()
}
并在MyFormUI中->
public void setLongView(){
myPanel.setPrefferedSize(new Dimension(-1,1000))
myPanel.repaint() ;
revalidate();
// I tried also repaint and revalidate on a higher jpanel in the hierarchy
}
当我在gui编辑器中更改它时,它确实会更改,但不会通过代码更改。
有什么建议么?
解决方法
myPanel.setPrefferedSize(new Dimension(-1,1000))
myPanel.repaint();
revalidate();
不确定-1会做什么。
代码应为:
myPanel.revalidate();
myPanel.repaint();
revalidate()实际上重做了组件的布局,然后重新绘制仅绘制了它。在您的代码中,您在重做布局之前要重新粉刷。
,如您所料,首选大小是仅首选。如果基础布局管理器不想使用此设置,则可以随意丢弃它。 IntelliJ IDEA使用其自己的布局管理器,因此您需要检查面板的“水平”和“垂直”尺寸策略是否允许调整大小。
如果您更详细地描述布局,将更容易诊断问题。