JMenu auf JPanel

feldmarv

Mitglied
Hallo Java Forum

Ihr konntet mit schon bei einigen Problem weiterhelfen. Ich bin blutiger Anfänger und versuche immer wieder neues, jedoch stehe ich fast immer am Ende bei etwas kleinem an.

Ich habe eine Swing Gui geschrieben. Sie funktioniert tadellos. Nun wollte ich auf das erste JPanel, ganz oben noch ein JMenu setzen. Gesagt getan. Aber jetzt wird nichts mehr angezeigt auch nicht mehr die unteren zwei Panels.

Wie bringe ich die Panels und die Menubar zusammen zum laufen?

Java:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
//import javax.swing.JTextField;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.*;	
import java.util.EventListener;


public class Gui extends JFrame implements ActionListener, MouseListener, MouseMotionListener, EventListener{
	
	JPanel pan = new JPanel();
	JPanel pan2 = new JPanel();
	JButton but1 = new JButton();
	JButton but2 = new JButton();
	JButton but3 = new JButton();
	JButton but4 = new JButton();
	JButton but5 = new JButton();
	JButton but6 = new JButton();
	JButton but7 = new JButton();
	JMenuBar menuleiste = new JMenuBar();
	JMenu menu	= new JMenu();
	JMenuItem speichern = new JMenuItem();
	JMenuItem beenden = new JMenuItem();
	
	

	JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	
	private Painter p;
	private String mode;				
	
	
	private Vector currentobject; 	
	
		
	public Gui(){
		super("Draw-Programm");
		getContentPane();
		setSize(870,800);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setResizable(false);	
		setLayout(new BorderLayout());	
 		setVisible(true);
		   
 		pan2.addMouseListener(this);
 		pan2.addMouseMotionListener(this);
 		
 		p = new Painter(pan2); // 
		p.start();
		
		
		setJMenuBar(menuleiste);
		
 	    JMenu menu = new JMenu("Datei");					 // erstellt Menü
 	    JMenuItem speichern = new JMenuItem("speichern");
 	    speichern.addActionListener(this);					//Menübutton laden
	    JMenuItem beenden = new JMenuItem("beenden");
	    beenden.addActionListener(this);
		
	  
		mode =	"Linie";
		mode =	"Rechteck";
		mode =	"Ellipse";
		

		
		
		// Das Fenster FERTIG
		
		// Nun JPanel Beginn
		pan.setBounds(0, 0, 870, 200);
		pan.setBackground(new Color(20, 150, 90));
		pan.setLayout(new BorderLayout());
		// JPanel FERTIG
		
		// Nun JPanel2 Beginn
		pan2.setBounds(0, 200, 870, 600);
		pan2.setBackground(Color.WHITE);
		pan2.setLayout(new BorderLayout());
		// JPanel2 FERTIG
		
		
		// Nun JButton1
		but1.setBounds(20, 30, 100, 50);
		but1.setText("Linie");
		but1.addActionListener(this);
		
		// JButton FERTIG
		
		// Nun JButton2
		but2.setBounds(140, 30, 100, 50);
		but2.setText("Rechteck");
		but2.addActionListener(this);
		
		// JButton FERTIG2
		
		// Nun JButton3
		but3.setBounds(260, 30, 100, 50);
		but3.setText("Ellipse");
		but3.addActionListener(this);
		
		// JButton FERTIG3
		
		// Nun JButton4
		but4.setBounds(380, 30, 100, 50);
		but4.setText("Freihand");
		but4.addActionListener(this);
		
		// JButton FERTIG4
		
		// Nun JButton5
		but5.setBounds(500, 30, 100, 50);
		but5.setText("Text");
		but5.addActionListener(this);
		
		// JButton FERTIG5
		
		// Nun JButton6
		but6.setBounds(700, 30, 150, 50);
		but6.setText("CLEAR");
		but6.addActionListener(this);
		
		// JButton FERTIG6
		
		// Nun JButton6
		but7.setBounds(380, 100, 100, 40);
		but7.setText("Radiergummi");
		but7.addActionListener(this);
		
		// JButton FERTIG6
		
			pan.add(but1);
			pan.add(but2);
			pan.add(but3);
			pan.add(but4);
			pan.add(but5);
			pan.add(but6);
			pan.add(but7);
			
			pan.add(menuleiste, BorderLayout.LINE_START);
			menuleiste.add(menu);
			
				menu.add(speichern);
				menu.add(beenden);

			
		splitpane.setTopComponent(pan);
	    splitpane.setBottomComponent(pan2);
	    
		add(pan);
		add(pan2);

		
	}
 

Ebenius

Top Contributor
JMenu ist dafür gedacht, auf einem JMenuBar zu wohnen. Und der gehört direkt in ein JFrame. Außerhalb funktioniert es meiner Erfahrung nach nicht so gut. Kennst Du die Sun Java™ Tutorials: How to Use Menus?

EDIT: Wie ich oben sehe setzt Du die JMenuBar ja schon aufs JFrame. Aber sie dann auch noch auf das Panel zu legen kann nicht funktionieren.

Insgesamt ist aber Dein Code oben ein bisschen durcheinander. [c]pan[/c] hat ein [c]BorderLayout[/c]. Aber Du fügst sieben Buttons in den CENTER-Bereich ein. Das ergibt keinen Sinn. Die JSplitPane lebt auch ungenutzt herum.

Ebenius
 
Zuletzt bearbeitet:

truesoul

Top Contributor
Hallo.

setVisible(true); in Zeile 60 wird zu früh aufgerufen. Also an das Ende packen.

Und das Menu solltest du nicht so verteilt aufbauen, sprich oben addest deine JMenuBar dann erstellst du JMenu und JMenuItem und so ziemlich weit unten addest du diese dann JMenuBar. Und dann addest einen JPanel nochmals JMenuBar.

Würde dir empfehlen alles nach der Reihe aufzubauen und nicht alles durcheinander.

Menubar zum Beispiel so:

Java:
private void setMenu(){

JMenuBar menuBar = new JMenuBar();
JMenu dataMenu = new JMenu("Datei");
JMenuItem saveMenuItem = new JMenuItem("Speichern");
JMenuItem exitMenuItem = new JMenuItem("Beenden");

saveMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);

dataMenu.add(saveMenuItem);
dataMenu.add(exitMenuItem);

setJMenuBar(menuBar);
}

Und dann hast du da z.B noch

Java:
mode =  "Linie";
mode =  "Rechteck";
mode =  "Ellipse";
Was soll denn jetzt in mode stehen? Linie, Rechteck oder Ellipse ?? Bzw worauf soll mode im Stringpool zeigen?

Insgesamt ist aber Dein Code oben ein bisschen durcheinander. pan hat ein BorderLayout . Aber Du fügst sieben Buttons in den CENTER-Bereich ein. Das ergibt keinen Sinn. Die JSplitPane lebt auch ungenutzt herum.
^^

Edit: 6 Minuten unterschied *tztz blödes Telefon :)
 

feldmarv

Mitglied
JMenu ist dafür gedacht, auf einem JMenuBar zu wohnen. Und der gehört direkt in ein JFrame. Außerhalb funktioniert es meiner Erfahrung nach nicht so gut. Kennst Du die Sun Java™ Tutorials: How to Use Menus?

EDIT: Wie ich oben sehe setzt Du die JMenuBar ja schon aufs JFrame. Aber sie dann auch noch auf das Panel zu legen kann nicht funktionieren.

Insgesamt ist aber Dein Code oben ein bisschen durcheinander. [c]pan[/c] hat ein [c]BorderLayout[/c]. Aber Du fügst sieben Buttons in den CENTER-Bereich ein. Das ergibt keinen Sinn. Die JSplitPane lebt auch ungenutzt herum.

Ebenius

Vielen Dank für die Antwort. Ja mit ist bewusst das mein Code etwas durcheinander ist, weil ich ständid neues ausprobiere. Das Layout von beiden Panels ist eigentlich ein NULL-Layout. Nicht BorderLayout wie das steht.

Wäre es dann Möglich die Menubar einfach mit setBounds zuoberst auf das erste Panel zu setzen?
 
G

Gast2

Gast
Vielen Dank für die Antwort. Ja mit ist bewusst das mein Code etwas durcheinander ist, weil ich ständid neues ausprobiere. Das Layout von beiden Panels ist eigentlich ein NULL-Layout. Nicht BorderLayout wie das steht.

Wäre es dann Möglich die Menubar einfach mit setBounds zuoberst auf das erste Panel zu setzen?

Les dir das Tutorial welches du soeben selbst noch einmal zitiert hast durch überarbeite deinen Code nach den zahlreichen Vorschlägen.

DANN frag nochmal wie was geht. Ein bisschen muss man auch selber beitragen.

Dir wurden bereits alle nötigen Hinweise mit Beispielen oder Quellenangaben gegeben. Programmieren lernt man nicht durch Fertig Code.

PS: Das soll keine Schikane sein, aber das Tutorial ist echt super. Damit kommst du auf jeden Fall weiter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? AWT, Swing, JavaFX & SWT 3
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Y Backgroundcolor JMenu AWT, Swing, JavaFX & SWT 2
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
R JMenu aus Ordnern AWT, Swing, JavaFX & SWT 4
P JMenu aus Dateistruktur AWT, Swing, JavaFX & SWT 2
I JMenu AWT, Swing, JavaFX & SWT 5
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
frankred Swing JMenu verschwindet nicht beim klicken ausserhalb des JMenu! AWT, Swing, JavaFX & SWT 4
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
E JMenu übersetzen AWT, Swing, JavaFX & SWT 9
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
T Swing JMenu als Button behandeln AWT, Swing, JavaFX & SWT 4
T Swing jMenu AWT, Swing, JavaFX & SWT 6
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
T Swing JMenu falsch positioniert AWT, Swing, JavaFX & SWT 2
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
Developer_X Swing JMenu Bug gefunden AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
hdi Welche Klasse + Listener für JMenu AWT, Swing, JavaFX & SWT 2
A JMenu Bug? AWT, Swing, JavaFX & SWT 12
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
C JMenu bzw. JButton mit URL versehen AWT, Swing, JavaFX & SWT 2
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
X JMenu AWT, Swing, JavaFX & SWT 2
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
Ernesto95 Programmabsturz beim Einbinden eines JMenu AWT, Swing, JavaFX & SWT 18
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
G Scrollbares JMenu AWT, Swing, JavaFX & SWT 4
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
H JMenu wird leider unterhalb! der CanvasFläche dargestellt AWT, Swing, JavaFX & SWT 5
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
padde479 JMenu mnemonic AWT, Swing, JavaFX & SWT 3
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B 1 JMenu in Mehrere JMenus AWT, Swing, JavaFX & SWT 2
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
I JMenu(Item) und FocusListener AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
R JMenu + Farbe von Hintergrund AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
D Schriftfarbe ändern (JFrame, JMenu etc) AWT, Swing, JavaFX & SWT 3
K JMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
I JMenu wird nicht dargestellt AWT, Swing, JavaFX & SWT 12
H JMenu soll "offen bleiben" AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
redztripe Haken in JMenu setzen? AWT, Swing, JavaFX & SWT 8
G Icon zu JMenu AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G JMenu - neuer Frame AWT, Swing, JavaFX & SWT 2
X Verschwinden des JMenu unterbinden AWT, Swing, JavaFX & SWT 3
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
E JTextArea überlagert JMenu AWT, Swing, JavaFX & SWT 2
D JMenu spinnt AWT, Swing, JavaFX & SWT 7
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
G JMenu Info-Fenster ganz Rechts AWT, Swing, JavaFX & SWT 5
H JMenu zuklappen AWT, Swing, JavaFX & SWT 7
K JMenu Aktionen AWT, Swing, JavaFX & SWT 3
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben