Swing Kommunikation zwischen JMenuBar und anderen Componenten

Status
Nicht offen für weitere Antworten.

Lexi

Bekanntes Mitglied
Guten Tag,

Ich habe eine Applikation, die zum einen Teil aus einer JMenuBar und zum anderen aus einem Panel besteht, welche beide zs auf einem JFrame platziert werden.
Ich suche jetzt nach einer guten Möglichkeit beide Sache miteinander kommunizieren zu lassen.

Da ich gerade daran verzweifle mein Problem vernünftig in Worte zu fassen, werde ich das ganze mit einem KKB ( oder wie das heißt ) verdeutlichen.

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

public class TestPanel extends JPanel {

	private JButton btn;

	public TestPanel() {
		btn = new JButton("Enable,Disable");
		btn.addActionListener(new TestPanelActionListener());
		add(btn);

	}

	class TestPanelActionListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// Jetzt sollen hier die Copy und Paste MenuItems
			// enabled bzw disaled werden
		}

	}
}

Java:
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class MainFrame extends JFrame {

	private JMenuItem miCopy, miPaste, miSayHello;

	public MainFrame() {
		JMenuBar bar = new JMenuBar();
		JMenu menuEdit = new JMenu("Edit");
		miCopy = initMenuItem("Copy", menuEdit);
		miPaste = initMenuItem("Paste", menuEdit);
		JMenu menuTalk = new JMenu("Talk");
		miSayHello = initMenuItem("SayHello", menuTalk);
		bar.add(menuEdit);
		bar.add(menuTalk);
		setJMenuBar(bar);
		add(new TestPanel());
		pack();
		setVisible(true);
	}

	private JMenuItem initMenuItem(String text, JMenu menu) {
		JMenuItem menuItem = new JMenuItem(text);
		menu.add(menuItem);
		return menuItem;
	}

	public static void main(String[] args) {
		new MainFrame();
	}

}

Sobald der User auf den Button btn klickt sollen die MenuItems Copy und Paste auf enabled(false) gesetzt werden.

Mein Gedanke war jetzt, dass man dort ganz gut mit einem Observer Pattern arbeiten könnte, allerdings wird das zunehmend unübersichtlich je mehr MenuItems man in seinem Menu/MenuBar hat. Das MainFrame wäre das Observable und das TestPanel demnach der Observer. Also regisitriert man beim TestPanel jetzt das MeinFrame als Observable. Wenn das Panel jetzt nur einen Button und das MainFrame nur wenige MenuItems hat ist das kein Problem, denn sobald der Button geklickt wurde wird die update() Methode des MainFrames aufgerufen und die nötigen Änderungen an den MenuItems werde vorgenommen.
Hat man jetzt allerdings mehrere Buttons und dazu auch noch eine Vielzahl an MenuItems, muss ich ja irgendwie unterscheiden, welche Button gedrückt wurde und welche MenuItems dann verändert werden sollen. Für jeden neuen Button ein eigenen Oberserver/Observable zu schreiben wäre nicht gerade ein schöner Stil.

Ein solches Problem gibt es doch bestimmt in jeder größeren Applikation, sobald eine MenuBar eingesetz wird, hat jmd damit evtl schon Erfahrung gemacht und hat ein Pattern, oder Muster o.ä. welches die Kommunikation zwischen einer MenuBar und anderen Componenten vereinfacht ?

Ich bin gerade etwas ratlos, weil ich nicht wirklich einen Ansatz habe und wäre sehr dankbar über jeden Hinweis.
 

eRaaaa

Top Contributor
huhu,

wieso so umständlich? auf die menuitems kannst du doch zugreifen (wenn du willst) wie auf jede anderen "variablen" auch. schreib dir methoden die beide deaktivieren, mach sie static oder wie auch immer.

/edit: es heißt kskb :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
F Event Handling Kommunikation eines JButton ueber JPanels hinaus AWT, Swing, JavaFX & SWT 6
B 2 Klassen Kommunikation AWT, Swing, JavaFX & SWT 4
J Applet Kommunikation unter Applets AWT, Swing, JavaFX & SWT 2
C Kommunikation SWING - Algorithmus AWT, Swing, JavaFX & SWT 4
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
S Schnittstelle zwischen Haupt und Nebenfenster AWT, Swing, JavaFX & SWT 17
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
I Swing JPanel Tab zwischen GUI Elementen AWT, Swing, JavaFX & SWT 6
data89 Verbindungslinien zwischen Formen auf einer "Zeichenfläche" AWT, Swing, JavaFX & SWT 2
DeeDee0815 SWT Text Widget: Zwischen Single und Password umschalten AWT, Swing, JavaFX & SWT 3
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
J Unterschied zwischen nicht-statischen und statischen Klassen AWT, Swing, JavaFX & SWT 5
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
T JTextField, der nur Werte zwischen 100 und 1000 zulässt AWT, Swing, JavaFX & SWT 28
M Linie zwischen JComponents AWT, Swing, JavaFX & SWT 5
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
G Drag&Drop zwischen JTables AWT, Swing, JavaFX & SWT 2
P Unterscheiden zwischen Mautasten-Druck? AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
I Drag and Drop zwischen zwei JTables AWT, Swing, JavaFX & SWT 5
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
R Navigieren zwischen mehreren Fenstern AWT, Swing, JavaFX & SWT 7
F Wie gebe ich Parameter zwischen Actions weiter? AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3
M Freiraum zwischen Knoten im JTree AWT, Swing, JavaFX & SWT 14
M Parameterübergabe zwischen Frames AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
M Breite veraendern zwischen 2 JPanels AWT, Swing, JavaFX & SWT 2
J Separator zwischen den einzelnen Symbolen in der Toolbar AWT, Swing, JavaFX & SWT 4
A Button zwischen zwei Panels verschieben. AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben