Swing JMenuBar unten in der Frame setzen?

Beatsleigher

Bekanntes Mitglied
Moin, moin.

Ich bin derzeit dabei, mein Programm für einen erneuten Release freizuschalten, doch vorher möchte ich zwei Komponenten tauschen; eine JMenuBar und eine JToolBar.

Die JMenuBar ist oben, und die JToolBar unten. Nun möchte ich die Position dieser beiden Komponente tauschen, weil das mit meinem momentanen L&F so funktioniert.

Hier ist ein Bild, welches das Design zeigt. Links: Mein Programm, rechts Dolphin (welches in QT geschrieben ist, jedoch mein GTK+ L&F benutzt).
tpo7xZIj

Ich möchte nur ungerne die JMenuBar komplett löschen und dann durch eine zweite JToolBar ersetzen, das würde auch einfach nicht schön aussehen.

Jede Hilfe ist willkommen :D

Danke im Voraus. :)
 

dzim

Top Contributor
Sieht ja pretty andvanced aus dein Tool! :)

Aber Ein Meü unter einer Toolbar??? Finde ich eher seltsam...
Das ich mal so was sage: Aber mach es doch wie (der alte?) Explorer von Microsoft. Wenn du ihn öffnest, hat er (normalerweise) kein Menü - drückst du dann aber mal die Alt-Taste (oder alternativ: wenn du in den oberen Bereich deiner Anwendung kommst), fadest du es ein (ich weiss das es so war, aber ich habe es anscheinend irgendwann mal fix gemacht).
 

Beatsleigher

Bekanntes Mitglied
Sieht ja pretty andvanced aus dein Tool! :)

Aber Ein Meü unter einer Toolbar??? Finde ich eher seltsam...
Das ich mal so was sage: Aber mach es doch wie (der alte?) Explorer von Microsoft. Wenn du ihn öffnest, hat er (normalerweise) kein Menü - drückst du dann aber mal die Alt-Taste (oder alternativ: wenn du in den oberen Bereich deiner Anwendung kommst), fadest du es ein (ich weiss das es so war, aber ich habe es anscheinend irgendwann mal fix gemacht).

Danke :) Es kann noch viel mehr :D

Ich hatte das in der alten Version vom Programm (die wurde in VB.NET geschrieben), und das sah auch ganz gut aus. Aber ich werde mal gucken, wie ich deinen Vorschlag effektiv einsetzen kann. Danke nochmal!
 

turtle

Top Contributor
Eine Menubar wird IMMER oben in der Komponente angezeigt, zu der sie hinzugefügt wird.

Also musst du "nur" ein JPanel zum Süden, wenn es Borderlayout ist, hinzufügen und diesem die Menubar hinzfügen.
Java:
	public static void main(String[] args) {
		JFrame frame = new JFrame("Swap Menu/toolbar");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(new BorderLayout(0, 0));

		JPanel panel_2 = new JPanel();
		frame.getContentPane().add(panel_2, BorderLayout.NORTH);
		panel_2.setLayout(new BorderLayout(0, 0));

		JToolBar toolBar = new JToolBar();
		JButton button = new JButton("");
		button.setIcon(new ImageIcon(Menu.class.getResource("/images/corner.png")));
		toolBar.add(button);
		panel_2.add(toolBar, BorderLayout.NORTH);

		JPanel panel_1 = new JPanel();
		frame.getContentPane().add(panel_1, BorderLayout.CENTER);

		JPanel panel = new JPanel();
		frame.getContentPane().add(panel, BorderLayout.SOUTH);
		panel.setLayout(new BorderLayout(0, 0));

		JMenuBar menuBar = new JMenuBar();
		panel.add(menuBar, BorderLayout.NORTH);

		JMenu menu = new JMenu("File");
		menuBar.add(menu);
		JMenuItem menuItem = new JMenuItem("Exit");
		menu.add(menuItem);
		frame.setSize(300, 300);
		frame.setVisible(true);
	}
 

Anhänge

  • SwapMenuToolbar.PNG
    SwapMenuToolbar.PNG
    10,2 KB · Aufrufe: 35

dzim

Top Contributor
@Turtle, dass ist Swing-Wissen, das mir fehlt... :)
In JavaFX (ich fass' Swing nicht mal mit Kneifzange mehr an ;-) ) wäre es allerdings völlig egal, wo das Menü liegt, daher bin ich davon ausgegangen, dass es in Swing genauso wäre...
 

Beatsleigher

Bekanntes Mitglied
Eine Menubar wird IMMER oben in der Komponente angezeigt, zu der sie hinzugefügt wird.

Also musst du "nur" ein JPanel zum Süden, wenn es Borderlayout ist, hinzufügen und diesem die Menubar hinzfügen.
Java:
	public static void main(String[] args) {
		JFrame frame = new JFrame("Swap Menu/toolbar");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(new BorderLayout(0, 0));

		JPanel panel_2 = new JPanel();
		frame.getContentPane().add(panel_2, BorderLayout.NORTH);
		panel_2.setLayout(new BorderLayout(0, 0));

		JToolBar toolBar = new JToolBar();
		JButton button = new JButton("");
		button.setIcon(new ImageIcon(Menu.class.getResource("/images/corner.png")));
		toolBar.add(button);
		panel_2.add(toolBar, BorderLayout.NORTH);

		JPanel panel_1 = new JPanel();
		frame.getContentPane().add(panel_1, BorderLayout.CENTER);

		JPanel panel = new JPanel();
		frame.getContentPane().add(panel, BorderLayout.SOUTH);
		panel.setLayout(new BorderLayout(0, 0));

		JMenuBar menuBar = new JMenuBar();
		panel.add(menuBar, BorderLayout.NORTH);

		JMenu menu = new JMenu("File");
		menuBar.add(menu);
		JMenuItem menuItem = new JMenuItem("Exit");
		menu.add(menuItem);
		frame.setSize(300, 300);
		frame.setVisible(true);
	}

Ok, danke, nur leider lässt mich NetBeans die MenuBar nicht mehr verschieben.

EDIT:
Ich habe mir kurze Hand überlegt, ich werde das Menü gleich weglassen. Stattdessen werde ich nur noch die Einstellungen oben in die ToolBar packen, für alles Andere gibt es schließlich Knöpfe...
VEL5ZsQ0
 
Zuletzt bearbeitet:

dzim

Top Contributor
Ansonsten mach es doch wie Gnome auch und baue eine Menu-Button (den dem Gear-Symbol) ein. Also eigentlich nur ein Kontext-Menü auf einem Button. Ich befürchte, dass du sonst die Oberfläche mit den weniger wichtigen Menüeinträgen überfrachtest...
 

Beatsleigher

Bekanntes Mitglied
Ansonsten mach es doch wie Gnome auch und baue eine Menu-Button (den dem Gear-Symbol) ein. Also eigentlich nur ein Kontext-Menü auf einem Button. Ich befürchte, dass du sonst die Oberfläche mit den weniger wichtigen Menüeinträgen überfrachtest...

Ich hab das jetzt einfach so gemacht:
np08b6IJ


Sieht meiner Meinung nach nicht schäbig aus, und passt auch gut zum allgemeinen Design.
 

dzim

Top Contributor
Juti und thumbs üp.

Ich möchte jetzt nicht überkritisch sein (jetzt kommt's :) ), ABER: Wäre es nicht scheen, wenn der Knopf eine feste Position im UI hätte? Am einfachsten vielleicht, indem du ihn nach ganz vorne setze (ganz rechts wird durch Swing nicht gehen, oder?) und per Separator von den anderen abtrennst. Ich weiss, dass ist überpingelig, aber ich programmier' gerne UIs (nur eben nicht mit Swing - ich muss meine Antipathie gegenüber Swing noch einmal verdeutlichen :p ).

Grüsse,
Daniel

PS: So... Ich versuche mich jetzt mit nervigen Kleinigkeiten zurückzuhalten...
 

Beatsleigher

Bekanntes Mitglied
Juti und thumbs üp.

Ich möchte jetzt nicht überkritisch sein (jetzt kommt's :) ), ABER: Wäre es nicht scheen, wenn der Knopf eine feste Position im UI hätte? Am einfachsten vielleicht, indem du ihn nach ganz vorne setze (ganz rechts wird durch Swing nicht gehen, oder?) und per Separator von den anderen abtrennst. Ich weiss, dass ist überpingelig, aber ich programmier' gerne UIs (nur eben nicht mit Swing - ich muss meine Antipathie gegenüber Swing noch einmal verdeutlichen :p ).

Grüsse,
Daniel

PS: So... Ich versuche mich jetzt mit nervigen Kleinigkeiten zurückzuhalten...


Ich nehme es as potenziellen Kundenfeedback :)
Alles gut, ich kann Kritik ab, es gehört zum Leben dazu.
 

dzim

Top Contributor
Soll keine Kritik sein, aber wie kamst du eigentlich zu der Entscheidung, Swing zu verwenden?
Warum nicht SWT oder JavaFX?
Nur so aus purer Neugier.
 

Beatsleigher

Bekanntes Mitglied
Soll keine Kritik sein, aber wie kamst du eigentlich zu der Entscheidung, Swing zu verwenden?
Warum nicht SWT oder JavaFX?
Nur so aus purer Neugier.

Ich benutze NetBeans, und ich habe mich einfach über die Zeit mit Swing angefreundet. Ich kann das Design beliebig verändern, und kann auch sonst damit tun und lassen was ich will.

Zudem habe ich in NetBeans so einen schönen Editor, wie ich es von VS gewohnt war (Zum Glück habe ich mit .NET aber nichts mehr zu tun :lol:)
 

dzim

Top Contributor
Naja, .NOT ist schon nicht so toll, aber C# als Sprache ist (leider) schon um so einiges "reicher" als Java - auch als Java 8...

Wenn du NetBeans benutzt, ist es klar, warum du kein SWT verwendest, aber JavaFX erschliesst sich mir dann nicht. Ich dachte die Integration wäre dort eben besonders gut. Ist das nicht so?
(Ich finde - wie man den anderen JavaFX-Antworten von mir hier im Forum vielleicht entnehmen kann ;-) - JavaFX einfach "zeitgemässer" als Swing. Aber wie gesagt: War nicht als Kritik gedacht, sondern reine Neugier.)
 

Beatsleigher

Bekanntes Mitglied
Naja, .NOT ist schon nicht so toll, aber C# als Sprache ist (leider) schon um so einiges "reicher" als Java - auch als Java 8...

Wenn du NetBeans benutzt, ist es klar, warum du kein SWT verwendest, aber JavaFX erschliesst sich mir dann nicht. Ich dachte die Integration wäre dort eben besonders gut. Ist das nicht so?
(Ich finde - wie man den anderen JavaFX-Antworten von mir hier im Forum vielleicht entnehmen kann ;-) - JavaFX einfach "zeitgemässer" als Swing. Aber wie gesagt: War nicht als Kritik gedacht, sondern reine Neugier.)

Ich kann sowohl in .NET (VB, C#), als auch in C++ und Java programmieren. Mir persönlich gefällt Java am Besten. Es is völlig plattformunabhängig, und ich kann unter Swing einige Sachen machen, die ich unter (z.B.) .NET nur mit WPF machen kann.

Das Einzige, was mir fehlt, ist With (Keyword) (VB), Using/using (VB/C#). Für alles Andere, habe ich eigene Lösungen gefunden, unter Anderem auch, wie ich meine Einstellungen verwalte. Unter .NET habe ich IMMER die Registry benutzt. Das war ein wenig benutzer-unfreundlich, und wo ich in .NET programmiert habe, war ich eine absolute Niete. Java hat mein Programmier-Horizont sehr viel erweitert. Aber zurück zum Punkt; seither benutze ich (so gut wie immer) settings.bin - Worin ich dann die Settings als String speicher. Dies mache ich so, damit N00bs nicht einfach so in die Einstellungen gehen und alles verpatzen.
 

dzim

Top Contributor
Falls du SQL kannst, wäre auch eine SQL-DB sinnvoll. Zum Beispiel SQLite
https://bitbucket.org/xerial/sqlite-jdbc

Aber auch JSON (z.B. via Jackson) oder XML (JaxB oder SimpleXML) bietet sich zum konfigurieren an. Properties oder INIs sind aber natürlich auch voll ok.

Ich bin eigentlich fast ausschliesslicher Java-Entwickler, kann etwas C (arg eingerostet) und C# (selten, mit Mono aber auch "relativ" platformunabhängig möglich, wenn man maximal win32 ohne schickschnack verwendet) sowie Python (coole Sprache, finde ich). JavaScript muss ich leider auch ein wenig machen (ich hasse diese "Sprache"). Zum Glück sind jetzt mit Java8 auch neue Sprachfeatures dazugekommen, mit denen man jetzt Funktionaler an Java herangehen kann. Ob das immer besser ist, muss wohl jeder für sich entscheiden.

Hast du eigentlich eine herunterladbare Version deines Tools, oder muss man es im Moment immer auschecken?
 

Beatsleigher

Bekanntes Mitglied
Falls du SQL kannst, wäre auch eine SQL-DB sinnvoll. Zum Beispiel SQLite
https://bitbucket.org/xerial/sqlite-jdbc

Aber auch JSON (z.B. via Jackson) oder XML (JaxB oder SimpleXML) bietet sich zum konfigurieren an. Properties oder INIs sind aber natürlich auch voll ok.

Ich bin eigentlich fast ausschliesslicher Java-Entwickler, kann etwas C (arg eingerostet) und C# (selten, mit Mono aber auch "relativ" platformunabhängig möglich, wenn man maximal win32 ohne schickschnack verwendet) sowie Python (coole Sprache, finde ich). JavaScript muss ich leider auch ein wenig machen (ich hasse diese "Sprache"). Zum Glück sind jetzt mit Java8 auch neue Sprachfeatures dazugekommen, mit denen man jetzt Funktionaler an Java herangehen kann. Ob das immer besser ist, muss wohl jeder für sich entscheiden.

Hast du eigentlich eine herunterladbare Version deines Tools, oder muss man es im Moment immer auschecken?

Ja, man kann es herunterladen. Jedoch nicht in dem Zustand, in dem es jetzt ist. Aber ich schicke dir mal via PN eine Vorabversion von 0.6 :)
Wenn du auf G+ angemeldet bist, kannst du mir da auch eine Nachricht schreiben. Da krieg ich es wenigstens mit :D

Sent from my GT-I9505 using Tapatalk
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
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
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
Q Designfrage zur JMenuBar AWT, Swing, JavaFX & SWT 6
S JMenuBar wiederverwenden und Eventhandling anpassen AWT, Swing, JavaFX & SWT 4
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
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T AWT Menübar unten? AWT, Swing, JavaFX & SWT 2
D Swing JScrollbar ganz nach unten scrollen AWT, Swing, JavaFX & SWT 2
V Swing MouseMotionEvent "nach unten weiterleiten". AWT, Swing, JavaFX & SWT 16
DStrohma Tabs unten anzeigen AWT, Swing, JavaFX & SWT 2
0 JScrollPane scrollt nicht nach unten AWT, Swing, JavaFX & SWT 5
R JScrollBar / JScrollPane: Ermitteln ob ganz unten AWT, Swing, JavaFX & SWT 2
G JTable in JScrollPane - nach unten scrollen AWT, Swing, JavaFX & SWT 11
C JScrollPane immer ganz unten ausrichten AWT, Swing, JavaFX & SWT 17
S 2 ContentPanels oben + unten in ein JPanel ? AWT, Swing, JavaFX & SWT 5
K Transparente Menüs (rechts unten über Uhr) AWT, Swing, JavaFX & SWT 8
O icon neben der Uhr unten AWT, Swing, JavaFX & SWT 8
T JTextPane in JScrollPane NICHT autom. nach unten scrollen AWT, Swing, JavaFX & SWT 3
M JScrollPane immer bis ganz nach unten scrollen lassen AWT, Swing, JavaFX & SWT 5
G GUI: Oben und unten Textfeld getrennt von einem Splitter AWT, Swing, JavaFX & SWT 2
S jScrollPane ganz nach unten scrollen AWT, Swing, JavaFX & SWT 4
P Zeichnen nur von oben links nach unten rechts möglich AWT, Swing, JavaFX & SWT 4
J Balken von ScrollPane immer unten AWT, Swing, JavaFX & SWT 6
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben