2011-01-06 9 views

Antwort

45

Von: http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html:

Jede GUI-Komponente nur einmal enthalten sein können. Wenn eine Komponente bereits in einem Container ist und Sie versuchen, sie einem anderen Container hinzuzufügen, wird die Komponente aus dem ersten Container entfernt und dann zur Sekunde hinzugefügt.

+2

Vielen Dank für Ihre Hilfe! –

+0

Ich habe nach dem genauen Wortlaut gesucht und meine Antwort zur gleichen Zeit wie du gepostet. Ich denke, ich hätte mich zuerst erfrischen müssen. – jzd

+0

Hehe. Es ist in Ordnung! –

1

Ich glaube nicht, dass das möglich ist. Was Sie tun können, ist, dass mehrere Komponenten denselben Ereignishandler verwenden. SO deklarieren Sie in Ihrem Fall zwei Schaltflächen und verwenden Sie die gleiche Event-Handler-Methode.

+0

Vielen Dank für Ihre Hilfe! –

3

Gelöst.

Überprüfung in der UI-Swing Abschnitt des Java Tutorial, heißt es.

Jede GUI-Komponente kann nur einmal enthalten sein. Wenn sich eine Komponente bereits in einem Container befindet und Sie versuchen, sie einem anderen Container hinzuzufügen, wird die Komponente aus dem ersten Container entfernt und dann zu dem zweiten hinzugefügt.
6

Wie Sie festgestellt haben, können Sie keine Komponenten freigeben. Es gibt jedoch andere Ansätze, die Sie verwenden können.

Im Falle eines JButtons können Sie eine Aktion gemeinsam nutzen:

JButton button1 = new JButton (someAction); JButton button2 = neue JButton (someAction);

Lesen Sie den Abschnitt aus dem Swing-Tutorial auf How to Use Actions für weitere Informationen.

In anderen Fällen möchten Sie vielleicht das Modell teilen:

DefaultTableModel model = new DefaultTableModel(...); 
JTable table1 = new JTable(model); 
JTable table2 = new JTable(model); 

Die Lösung hängt von Ihrer Anforderung.

Verwandte Themen