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();
}
sehr gut, mit [SSCCE] (http schöne Frage im Fall bearbeiten Sie Ihre Frage sein könnte: // sscce.org/) – mKorbel
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. –
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