【问题标题】:intellij and swing - changing jpanel sizeintellij 和 swing - 更改 jpanel 大小
【发布时间】:2011-05-26 13:12:25
【问题描述】:

我正在使用带有 swing 的 intellij。
我的应用程序在具有不同显示器的不同计算机上运行。
我想以不同的尺寸显示我的表单。

我在 intellij gui 编辑器中有一个 JPanel(不是主要的 .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 编辑器中更改它时 - 它确实发生了变化,但不是通过代码。
有什么建议么?

【问题讨论】:

  • 这是 Production Swing 应用程序应该直接编码而不是使用 GUI Builder 的主要原因之一。
  • 这就是为什么我留下评论而不是回答这个问题。从长远来看,如果需要对其进行进一步维护,您应该考虑更换它。

标签: java swing intellij-idea


【解决方案1】:
myPanel.setPrefferedSize(new Dimension(-1, 1000))
myPanel.repaint();
revalidate();     

不确定 -1 的作用。

代码应该是:

myPanel.revalidate();     
myPanel.repaint();

revalidate() 实际上是重做组件的布局,而重绘只是绘制它。在您的代码中,您在重做布局之前重新绘制。

【讨论】:

    【解决方案2】:

    您可能猜到,首选尺寸只是首选。如果底层布局管理器不想使用此设置,则可以随意丢弃它。 IntelliJ IDEA 使用自己的布局管理器,因此您需要检查面板水平和垂直大小策略是否允许调整大小。

    如果您更详细地描述您的布局,将更容易诊断问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多