Senden von Nachrichten zwischen zwei JPanel-Objekten

8

Ich habe einen Java JFrame mit einem JPanel. Innerhalb dieses JPanels gibt es zwei getrennte JPanels. Wenn der Benutzer auf eine Schaltfläche im ersten JPanel klickt, muss eine Nachricht an die andere JPanel gesendet werden, die darauf hinweist, auf welche Schaltfläche geklickt wurde. Was ist der einfachste Weg, Nachrichten zwischen solchen Objekten zu senden?

    
22222222 13.08.2011, 21:06
quelle

4 Antworten

11

Für mKorbel (und das ursprüngliche Poster):
Was ich empfehle, ist eine lockere Kopplung, dass die eine JPanel keine Kenntnis von der anderen JPanel hat und dass alle Verbindungen durch irgendeine Art von Kontrolle zustande kommen. Zum Beispiel, um etwas von Ihrem Code zu leihen:

CopyTextNorthPanel2.java

%Vor%

CopyTextSouthPanel2.java

%Vor%

CopyTextControl2.java

%Vor%

CopyText2.java

%Vor%     
Hovercraft Full Of Eels 14.08.2011, 00:12
quelle
6

Sie könnten ein benutzerdefiniertes Ereignis erstellen und einen oder mehrere Listener an dieses Ereignis anhängen.

Der richtige Weg zur Implementierung besteht darin, dass der Button ActionListener das Ereignis auslöst und dann Ihre beiden Panels Listener für dieses Ereignis sind.

    
Romain Hippeau 13.08.2011 21:18
quelle
3

am Anfang Ihrer Klasse

%Vor%

Aber wirklich, ich denke, es ist Zeit, über Designmuster nachzudenken. Was Sie beschreiben, ist ein perfekter Kandidat für das Beobachter -Muster und möglicherweise für das Befehl Muster

    
Matthew 13.08.2011 21:28
quelle
2

zum Beispiel, indem Sie Konstruktor zwischen Klassen verwenden oder (zum Debugging-Problem) den Wert von gewünschten JComponent (s) mit getParent()

extrahieren %Vor%

+

%Vor%

+

%Vor%

+

%Vor%     
mKorbel 13.08.2011 21:41
quelle