2011-05-26 97 views
1

我正在使用intellij與鞦韆。
我的應用程序在具有不同顯示器的不同計算機上運行。
我想以不同尺寸顯示我的表單。intellij和swing - 改變jpanel大小

我在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編輯器改變它 - 它確實發生了改變,而不是通過代碼。
有什麼建議嗎?

+0

這是生產Swing應用程序應直接編碼而不是使用GUI生成器的主要原因之一。 – jzd 2011-05-26 13:35:57

+0

這就是爲什麼我留下評論而不是回答這個問題。長期來看,如果要進一步維護它,你應該考慮改變它。 – jzd 2011-05-26 14:03:47

回答

0

正如您所猜想的,首選尺寸只是首選。如果底層佈局管理器不想使用此設置,則可以自由放棄它。 IntelliJ IDEA使用其自己的佈局管理器,因此您需要檢查面板的「水平」和「垂直」大小策略是否允許調整大小。

如果您更詳細地描述佈局,將更容易診斷問題。

2
myPanel.setPrefferedSize(new Dimension(-1, 1000)) 
myPanel.repaint(); 
revalidate();  

不知道-1是幹什麼的。

的代碼應該是:

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

的重新驗證()實際上重新進行組件的佈局和重繪只是描繪它。在重做佈局之前,您正在重繪代碼。