intellij和swing-更改jpanel大小

问题描述

| 我正在使用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使用其自己的布局管理器,因此您需要检查面板的“水平”和“垂直”尺寸策略是否允许调整大小。 如果您更详细地描述布局,将更容易诊断问题。