Update verschachteltes JPanel < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 09:01 Mo 14.06.2010 | Autor: | dande |
Aufgabe | Ich habe ein JFrame, in dem ein JTabbedPane das Management übernimmt. Mehrere dieser Panels folgen einem Template, das aus drei Komponenten besteht.
Der untere Bildrand beinhaltet ein JScrollPane, in dem eine JTextArea "wohnt". Am linken Rand ist ein JPanel, das untereinander einen Vektor von JRadioButtons anzeigt. Dieser JRadioButton ist Teil einer Klasse Listable, die außerdem ein JPanel beinhaltet, das eine Liste von Eingabefeldern ausgibt.
Der größte Teil des Tab-Inhalts (rechts oben also) ist ein JPanel. Darin soll immer das JPanel angezeigt werden, das zu dem gerade aktiven JRadioButton gehört. Beim Programmstart befindet sich dort ein JLabel, das den User zum Klicken aufruft. |
Wenn ich auf den JRadioButton für das erste Element des Vektors von Listables klicke, ist alles gut. Bei allen anderen muß ich erst in das Panel klicken, wo die Eingabefelder angezeigt werden sollen (ich nenn's jetzt mal Anzeigepanel), damit dem auch so ist.
Sie sollen aber alle sofort bei Klick auf den Button angezeigt werden. Wie kann ich das bewerkstelligen?
Der MouseListener am JRadioButton tut folgendes:
target.removeAll();
JPanel component=source.getContent();
target.add(component);
target.update(component.getGraphics());
target.getParent().repaint();
Dabei ist target das Anzeigepanel, target.getParent() das Panel, das im JTabbedPane liegt, source das zum RadioButtonListener gehörende Listable und getContent() gibt nur das vorgefertigte JPanel zurück.
Alle diese Elemente kriegt der Listener gleich zum Anfang mit auf den Weg.
Kann es sein, daß ich einen künstlichen Mausklick auf component bzw. target feuern muß? Wenn ja, wie geht das?
repaint() stattdessen auf target anwenden klappt nicht, auch auf beide bleibt folgenlos.
edit: erledigt; es fehlte nach dem Löschen der Aufruf
target.updateUI();
.
|
|
|