2012-04-07 6 views
2

Ich habe ein Projekt mit einer Vielzahl von Panels. Ich habe eine Methode, die die Karte (jpanel) in einem Kartenlayout-Panel (siehe unten) schaltet. Das alles funktioniert gut, wenn ich es aus meiner IDE (Netbeans) und wenn ich das Glas von der Eingabeaufforderung (java -jar MyStuff.jar) ausführen. Aber wenn ich auf das Glas doppelklicke, ändert sich die Karte aber nicht repaint produziert unerwünschte Ergebnisse (wenn ich Maus über die Komponenten erscheint). Wenn ich die Methode erneut aufruft, indem ich erneut auf die Schaltfläche klicke, wird sie angewendet. Ich brauche sofort Hilfe bitte :) Danke!Swing nicht neu zu streichen, wenn ich die .jar außer in der Eingabeaufforderung

/** 
* 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

sehr gut, mit [SSCCE] (http schöne Frage im Fall bearbeiten Sie Ihre Frage sein könnte: // sscce.org/) – mKorbel

+1

Diese [SSCCE mit 'CardLayout'] (http://stackoverflow.com/a/5786005/418556) funktioniert ohne Aufruf von' repaint() ',' revalidate() '* oder * ' validate () '. Ich kann nur feststellen, dass dein Code sehr falsch ist. Aber ich werde einen weiteren Kommentar für *** *** *** *** reservieren. –

+0

Sie haben Recht, ich bin falsch, SSCCE nicht zu verwenden. Ich habe einfach keine Zeit und in ein paar Stunden ist es egal. Ich verwende stattdessen eine Fledermausdatei, um es auszuführen. Danke für die Hilfe. – kentcdodds

Antwort

3

(when I mouse over the components appear) für diesen Code tauschen nur von

repaint(); 
revalidate(); 

zu

revalidate(); 
repaint(); 
+0

Hat nicht funktioniert. Danke trotzdem. – kentcdodds

+0

@kentcdodds: Wenn es nicht funktioniert hat, möchten Sie möglicherweise Ihre [sscce] erstellen und veröffentlichen (http://sscce.org). –

+0

+1, ich werde mit der Antwort gehen :-), konnte einfach nicht den Aufruf zu 'repaint()/revalidate()' von OP verstehen, auch das in CardLayout :-) –

Verwandte Themen