2012-04-07 44 views
2

我有一個包含很多面板的項目。我有一種方法可以在卡布局面板中切換卡(jpanel)(請參見下文)。這一切工作正常,當我從我的IDE(Netbeans)運行它,當我從命令提示符(java -jar MyStuff.jar)運行罐子。但是當我雙擊Jar時,卡片會發生變化,但不會產生不希望的結果(當我將鼠標懸停在組件上時)。如果我再次點擊該按鈕再次調用該方法,它將適用。我需要立即請求幫助:)謝謝!當我運行除了在命令提示符下的.jar時Swing不會重新繪製

/** 
* Shows a panel by the given panel name (in the cardPanel) 
* 
* @param panelName 
*/ 
private void showPanel(String panelName) { 
    if (panelName.equals("revenueSources")) { 
    backButtonIcon.setVisible(false); 
    } else { 
    backButtonIcon.setVisible(true); 
    } 
    currentPanelName = panelName; 
    ((CardLayout) cardPanel.getLayout()).show(cardPanel, panelName); 
    repaint(); 
    revalidate(); 
} 
+2

非常好,可能的情況下編輯好的問題與[SSCCE](HTTP你的問題:// sscce.org/) – mKorbel 2012-04-07 14:49:37

+1

此[SSCCE使用'CardLayout'](http://stackoverflow.com/a/5786005/418556)工作而不會調用'重繪()','重新驗證()'*或* '的validate( )'。我只能斷定你的代碼是非常錯誤的。但我會爲***你的*** SSCCE預留更多評論。 – 2012-04-07 14:56:46

+0

你說得對,我錯了不使用SSCCE。我只是沒有時間而且在幾個小時內就沒有關係。我只是用bat文件來運行它。謝謝您的幫助。 – kentcdodds 2012-04-07 14:59:14

回答

3

(when I mouse over the components appear)此代碼只交換從

repaint(); 
revalidate(); 

revalidate(); 
repaint(); 
+0

沒有工作。不管怎麼說,還是要謝謝你。 – kentcdodds 2012-04-07 14:59:51

+0

@kentcdodds:如果它不起作用,那麼你可能希望創建併發布你的[sscce](http://sscce.org)。 – 2012-04-07 15:19:32

+0

+1,我會回答:-),只是無法理解OP對'repaint()/ revalidate()'的調用,這在CardLayout中也是如此:-) – 2012-04-07 17:26:05

相關問題