Designfrage zur JMenuBar

qexxler

Aktives Mitglied
Guten Morgen zusammen,

wie der Titel es schon andeutet, habe ich eine Frage bzgl. des Designs meiner JMenuBar. Per set-Methode füge ich einem Frame eine JMenuBar hinzu. Doch wie konzipiere ich das generelle Design für eine JMenuBar, sodaß ich aus allen benötigten Klasse auf diese JMenuBar zugreifen kann? Schließlich werden für die verschiedenen Menupunkte Aktionen hinterlegt, die auf verschiedenste Klassen zurückgreifen.

Meine erste, triviale Idee wäre, die Klasse, die den JFrame hält, eine get-Mathode zu implementieren, die die JMenuBar liefert und ich nach Wunsch darauf zugreifen kann. Doch irgendwie erscheint mir diese Vorgehensweise etwas zu "bad code" und überhaupt nicht Objektorientiert. Habe bisher auch noch nichts gefunden, wie man eine JMenuBar in eine Applikation gut implementiert.

Könnt ihr mir hierbei Tipps geben?
 

qexxler

Aktives Mitglied
Danke für die Links, aber das habe ich soweit verstanden. Vielleicht habe ich auch nur einen Denkfehler.

Ich habe das Gefühl, dass meine JMenuBar eben das Wissen aller beteiligten Klassen haben muss, für die es die Aktionen durchführt.
Ich würde zunächst eine eine Klasse MyMenuBar, die als Instanz-Variable eine JMenuBar hat, erstellen und eine Instanz an meinen JFrame per set Methode hängen. Nun weiß aber meine JMenuBar nichts von all den Objekten in meiner GUI. Und da ich im späteren Verlauf sicherlich noch Klassen zu meiner UI hinzufüge, die etwas mit der JMenuBar zu tun haben, müsste ich dann auch wieder eine Referenz auf die JMenuBar haben.

Verstehst du vielleicht meine Frage?
Hole gerade erst meinen Kaffeerückstand der vergangenen Nacht nach. ;)
 

qexxler

Aktives Mitglied
Vielleicht mal ein kleines Beispiel von mir:

  • Eine Klasse MyMenuBar die als Instanz-Variable eine JMenuBar hat und man diese per get-Methode bekommt.
  • Durch die get-Methode erhalte ich dann in der Klasse, die den JFrame hält, die JMenuBar, welche ich dem Frame hinzufügt.
  • In der Klasse MyMenuBar designe ich meine JMenuBar aus.

Soweit ist alles klar.

Nur wenn ich später dann eine neue Klasse designe, die auch Menupunkte in meiner JMenuBar bekommen soll, kommt meine ursprüngliche Frage ins Spiel. Wie genau designe ich das?
Soll ich der neu zu designenden Klasse per Konstruktor direkt die JMenuBar als Referenz mitliefern, sodaß sie direkt ihre Aktionen mit allen Menupunkten etc. auf die JMenuBar legen kann, oder leifere ich dem Konstruktor einfach das JFrame selbst mit?
 

turtle

Top Contributor
Ah, ok jetzt habe ich es besser verstanden:)

Soll ich der neu zu designenden Klasse per Konstruktor direkt die JMenuBar als Referenz mitliefern, sodaß sie direkt ihre Aktionen mit allen Menupunkten etc. auf die JMenuBar legen kann, oder leifere ich dem Konstruktor einfach das JFrame selbst mit?
Ich bin der Meinung, das man das kleinst-mögliche Objekt bzw. die wenigsten Informationen transportieren sollte. Da deine Klasse wohl "nur" Zugriff/Kenntnis über die Menubar benötigt, würde ich auch "nur" die Referenz auf die JMenuBar darauf, wohl auch über den Konstruktor, übergeben. Eine Referenz auf das gesamte JFrame ist meiner Ansicht nach zuviel und die Klasse KÖNNTE mehr
ändern als beabsichtigt.
 

qexxler

Aktives Mitglied
Ich danke dir für die Information. Denn ich hatte immer das Problem, nicht zu wissen, was ein gutes MenuBar Design ist und wie man das für größere Software entsprechend implemenieren sollte. Damals dachte ich, ich mache in meiner Klasse, die die JMenuBar darstellt, einfach die entsprechende Instanz-Variable public static und habe somit überall in meinem Programm direkten Zugriff auf die JMenuBar, was das anpassen entsprechend vereinfachen würde.

Ich werde nun einmal schauen, wie sich das mit dem übergeben der entsprechenden Referenz der JMenuBar im Konstruktor verhält. Auf jeden Fall Danke. :)

PS: Wie machst du es in deiner Software? ;)
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ich nutze kaum Swing und JMenuBar;)
Und wenn doch habe ich das meistens in einer Routine zusammengefasst:
Java:
frame = new JFrame();
		runAction = new RunAction(this, "Start", createImageIcon(
				"images/run.gif", ""), null, KeyStroke.getKeyStroke(
				KeyEvent.VK_S, KeyEvent.ALT_MASK));
JMenu serverMenu = new JMenu("Server");
		startMenu = new JMenuItem("Start server");
		startMenu.setAction(runAction);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
kaoZ Swing Designfrage AWT, Swing, JavaFX & SWT 21
R Swing Designfrage - Zusammenspiel Model / View AWT, Swing, JavaFX & SWT 10
Z Swing Actions Designfrage AWT, Swing, JavaFX & SWT 2
J Swing JApplet Designfrage AWT, Swing, JavaFX & SWT 4
Y Swing Designfrage (MVC) AWT, Swing, JavaFX & SWT 18
J Designfrage bei rechenintensiver Operation AWT, Swing, JavaFX & SWT 7
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
G designfrage zu 2 panels AWT, Swing, JavaFX & SWT 2
G Designfrage zu Komonenten eines JPanels AWT, Swing, JavaFX & SWT 3
J Allgemeine Designfrage ! AWT, Swing, JavaFX & SWT 3
C JMenuBar AWT, Swing, JavaFX & SWT 6
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
J Swing JMenuItem blockiert JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar bei sichtbarer JGlassPane AWT, Swing, JavaFX & SWT 1
R JMenuBar.setFont tut nix ? AWT, Swing, JavaFX & SWT 1
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
A Swing JMenuBar updaten AWT, Swing, JavaFX & SWT 2
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
S JMenuBar wiederverwenden und Eventhandling anpassen AWT, Swing, JavaFX & SWT 4
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
G Swing JMenuBar zu weit links und oben dargestellt AWT, Swing, JavaFX & SWT 5
B Swing Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
D JMenuBar - CardLayout (Klasse anzeigen) AWT, Swing, JavaFX & SWT 3
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
H jMenuBar AWT, Swing, JavaFX & SWT 13
NR_EIGHT Swing Probleme mit JMenuBar AWT, Swing, JavaFX & SWT 6
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
Madlip JMenuBar in JFrame AWT, Swing, JavaFX & SWT 5
B JFrame / JMenuBar => Anfängerprobleme AWT, Swing, JavaFX & SWT 2
R JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar nach 1. Klick deselectieren AWT, Swing, JavaFX & SWT 6
Z JMenuBar wird nicht in JFrame angezeigt AWT, Swing, JavaFX & SWT 2
N JMenuBar verschwindet nicht nach ComponentEvent AWT, Swing, JavaFX & SWT 6
C JMenuBar aktualisieren? AWT, Swing, JavaFX & SWT 2
A Doppelte JMenuBar AWT, Swing, JavaFX & SWT 2
X NullPointerException beim Einfügen einer JMenuBar AWT, Swing, JavaFX & SWT 4
C JMenuBar im JFrame abgehackt AWT, Swing, JavaFX & SWT 7
J Swing JFrame mit JMenuBar, allerdings ohne Erfolg AWT, Swing, JavaFX & SWT 10
K Look&Feel von JMenuBar und Subkomponenten anpassen AWT, Swing, JavaFX & SWT 6
C JMenuBar linksbündig AWT, Swing, JavaFX & SWT 6
C Größe JMenuBar AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing Actions direkt auf der JMenuBar AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
Developer_X Swing JMenuBar Layout AWT, Swing, JavaFX & SWT 2
kniffel JMenuBar aus anderer Klasse AWT, Swing, JavaFX & SWT 10
G Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
G JMenuBar verschmälern AWT, Swing, JavaFX & SWT 2
M ALT shortcut für JMenuBar deaktivieren AWT, Swing, JavaFX & SWT 3
X JMenuBar überlappt von JPanel :( AWT, Swing, JavaFX & SWT 7
M4nuel Warum überlagert JDesktopPane mein JMenuBar? AWT, Swing, JavaFX & SWT 5
G StatusBar Optik wie JMenuBar; GUI-Erzeugung delegieren AWT, Swing, JavaFX & SWT 2
J JMenuBar in Frame einbauen AWT, Swing, JavaFX & SWT 6
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
P JMenuBar und JToolBar Anzeige Probleme AWT, Swing, JavaFX & SWT 5
C JLabel in JMenuBar frei platzieren AWT, Swing, JavaFX & SWT 2
B JMenubar AWT, Swing, JavaFX & SWT 5
Chris_1980 Makierungsfarbe bei JMenuBar ändern AWT, Swing, JavaFX & SWT 5
L Problem mit JMenuBar AWT, Swing, JavaFX & SWT 5
F JTextField rechts in der JMenuBar AWT, Swing, JavaFX & SWT 4
A gezeichnete Linie verschwindet, wenn ich JMenuBar öffne AWT, Swing, JavaFX & SWT 2
I JMenuBar - Menüs sortieren AWT, Swing, JavaFX & SWT 2
S JMenuBar mit Action belegen! AWT, Swing, JavaFX & SWT 5
M JMenuBar AWT, Swing, JavaFX & SWT 7
B JMenuBar sowie Buttons nach repaint auf JPanel AWT, Swing, JavaFX & SWT 2
T JMenuBar ausblenden lassen aber Hotkeys sollen erhalten sein AWT, Swing, JavaFX & SWT 2
S JMenuBar + update AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
T JMenuBar zweizeilig AWT, Swing, JavaFX & SWT 2
A JMenuBar + paint (Image) AWT, Swing, JavaFX & SWT 6
M JmenuBar wird net angezeigt :( AWT, Swing, JavaFX & SWT 6
U komplette JMenuBar deaktivieren? AWT, Swing, JavaFX & SWT 4
S Mausklick reagiert nicht im JMenuBar AWT, Swing, JavaFX & SWT 4
A JMenuBar verschieben. AWT, Swing, JavaFX & SWT 4
T JMenuBar wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
H JFrame, JMenuBar, ScrollBar AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben