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
********************************************************
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();
}
}
}