JMenu wird leider unterhalb! der CanvasFläche dargestellt

Status
Nicht offen für weitere Antworten.
H

Humphry

Gast
Hallo,

wenn man in meinen GUI-Programm auf das JMenu namens "File" klickt, wird das Menü leider nicht über der Canvas-Malfläche, sondern unterhalb dieser dargestellt!
Das ist ziemlich ärgerlich, da dadurch das Menü verdeckt wird!

Wie müsste der Code lauten bzw. abgeändert werden, damit dies nicht geschieht?
Meinetwegen können auch andere Layoutmanager als im angefügten Code benutzt werden, falls damit das Problem gelöst wird. Nur sollte das GUI Programm vom Layout her dem Original möglichst ähneln.

Mein System:
Vista
Eclipse 3.1.1
JRE 6.0.1

bye,
Humphry

PS: Schade, dass man in diesem Forum nicht Screenshots hochladen kann, nicht jeder hat spontan einen Server-Account zum hochladen von Bildern parat...ansonsten hätte ich ein Screenshot mitgeschickt

********************************************************

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

//bug: Menü wird unterhalb der Zeichenfläche dargestellt!

public class MenuBug extends JFrame {
	CMeineCanvas m_malfläche;  // Hier wird gezeichnet		
	JLabel label1;
	JLabel label2;
	
	public static void main(String[] args) {				
		MenuBug Fenster = new MenuBug("Gui mit Menu");				
		Fenster.pack();
		Fenster.setSize(280,310);  //Fensterbreite und Höhe
		Fenster.show();
	}
	
	MenuBug(String titel) {
		super(titel);		
		
//		Layout-Manager: FlowLayout
		getContentPane().setLayout(new FlowLayout());
		
//		ContainerPanel anlegen
		JPanel panel = new JPanel();
		
		panel.setLayout(new FlowLayout());
//		GUI-Element erzeugen
		label1 = new JLabel("1tesLabel");
		label2 = new JLabel("2tesLabel");
				
//		Menu 
		JMenuBar menuleiste = new JMenuBar();
		JMenu menu1 = new JMenu("File");
		menuleiste.add(menu1);
		JMenuItem menuItem = new JMenuItem("Open");
		JMenuItem menuItem2 = new JMenuItem("Save");
		menu1.add(menuItem);
		menu1.add(menuItem2);
		setJMenuBar(menuleiste);
		
//		Rechteckige schwarze Malfläche ins Fenster hinzufügen
		m_malfläche = new CMeineCanvas();
		getContentPane().add(m_malfläche);
		
//		die beiden jLabel in den PanelContainer "panel" einfügen
		panel.add(label1);
		panel.add(label2);
		getContentPane().add(panel);
		
//		EventListeners
		addWindowListener(new CMeinWindowAdapter());
	}
		
//	Event-Handling zum Schließen des Fensters
	class CMeinWindowAdapter extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	}
	
	class CMeineCanvas extends Canvas {
		CMeineCanvas() {			
			setBackground(Color.black);
		}
		
//		Methode zum Zeichnen
		public void paint(Graphics g) {
			g.setColor(Color.orange);
			g.drawLine(50,50,150,150);
		}
		
//		Diese Methode liefert die minimale Größe der Canvas
		public Dimension getMinimumSize() {
			return new Dimension(200,200);
		}
		
//		Die Lieblingsgröße setzen wir auf die Minimalgröße
		public Dimension getPreferredSize() {
			return getMinimumSize();
		}
	}
}
 
G

Guest

Gast
Hobbit_Im_Blutrausch hat gesagt.:
kein AWT und Swing mischen!

Danke erstmal!

Lieber auf AWT oder Swing setzen?
Schätze mal Swing, da ich mal gelesen habe, Swing ist moderner als AWT? (Habe übrigens vor viele weitere unterschiedliche GUI Elemente einzufügen, vielleicht spielt das auch eine Rolle ob man sich für AWT oder Swing entscheidet?)

Hmm, weiß leider nicht wie ich den Code ändern müsste, um jetzt beispielsweise auf reinen Swing Code überzugehen?
Kann mir jemand Tipps geben, bzw. den kompletten abgeändertne Code ins Forum posten? (Denn wenn ich beispielsweise das import awt... auskommentiert, erhalte ich natürlich haufenweise errors, was ist nun also am besten zu tun?)

Humphry
 

The_S

Top Contributor
Also ich würde dir zu Swing raten. Dazu gibts hier aber haufenweise Beiträge. Generell nichts aus AWT zu importieren geht natrülich auch nicht. Es geht mehr darum keine Heavy- und Light-Weight Componenten zu benutzen. Das heißt, du kannst Klassen wie Graphics, Color oder Font ruhig weiter aus dem AWT-Package verwenden, solltest aber auf Darstellungseinheiten aus dem AWT-Bereich wie z. B. Canvas verzichten. Stattdessen könntest du zum Beispiel ein JPanel verwenden.
 
G

Guest

Gast
Hobbit_Im_Blutrausch hat gesagt.:
Also ich würde dir zu Swing raten. Dazu gibts hier aber haufenweise Beiträge. Generell nichts aus AWT zu importieren geht natrülich auch nicht. Es geht mehr darum keine Heavy- und Light-Weight Componenten zu benutzen. Das heißt, du kannst Klassen wie Graphics, Color oder Font ruhig weiter aus dem AWT-Package verwenden, solltest aber auf Darstellungseinheiten aus dem AWT-Bereich wie z. B. Canvas verzichten. Stattdessen könntest du zum Beispiel ein JPanel verwenden.

Supi, vielen Dank! Deine Antwort hat mir weitergeholfen!
Habe also dank deinem Hinweis nämlich zunächst bei der Zeichenfläche "extends JPanel" statt "extends Canvas" verwendet. Das Menü wurde nun korrekt oberhalb der Zeichenfläche angezeigt.
Das Problem war nun bloss noch: Die Zeichenfläche war nicht mehr schwarz, habe also die Zeile:
super.paintComponent(g);
hinzugefügt, jetzt ist alles Paletti
:D

Code:
//		Methode zum Zeichnen
		public void paint(Graphics g) {
			super.paintComponent(g);
			g.setColor(Color.orange);
			g.drawLine(50,50,150,150);
		}

PS: Weiss leider nicht wie ich diesen Beitrag als "erledigt" markieren kann. Man müsste hierzu wohl ein angemeldeter Benutzer sein?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? 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
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 unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
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
F JMenu auf JPanel AWT, Swing, JavaFX & SWT 5
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
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
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
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
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 Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben