Ich habe eine Swing-Anwendung, in der ich Bilder in einem JPanel anzeigen. Wenn die App das Bild nicht erzeugen kann, möchte ich das vorherige aus dem JPanel entfernen und durch ein JTextField und eine Nachricht ersetzen. Ich kann das Textfeld hinzufügen, aber es wird über den vorherigen Inhalt gezeichnet, der wiederum eine Unterklasse von JPanel ist. Hier ist, was ich habe:JPanel removeAll wird nicht von früheren Komponenten loswerden
private void displayMessage(String message) {
JTextField tf = new JTextField(message);
cdPanel.removeAll();
cdPanel.add(tf, BorderLayout.NORTH);//tried lots of variations, inc. no layout
cdPanel.validate();
}
Wie kann ich CDPanel vollständig neu zeichnen?
Hatten Sie versucht, ruft 'cdPanel.revalidate(); cdPanel.repaint() 'anstelle von' cdPanel.validate() '? Wie werden Bilder auf diesem 'JPanel' angezeigt? Benutzt du 'JLabel' oder zeichne sie direkt auf' JPanel'? –
@NICEcOw Danke, das funktioniert perfekt. Bitte poste, damit ich deine als Antwort markieren kann :-) – jaybee
Du bist am WILLKOMMENSTEN und HÄLT LÄCHELN :-) Aber bitte versuch vom nächsten Mal, die Informationen in vollen Zügen zu geben, als würdest du es einem Kind erklären, Was __Was machst du? __, __Was erwartest du? __ und __Was ist genau passiert? __ Auf diese Weise kann die Person, die antwortet, einen besseren Einblick in die gegebene Situation geben :-) –