2016-06-09 23 views
-1

Hat jemand von euch eine Idee, warum meine JMenuBar menuBar nicht angezeigt wird? Ich verwende eine JFrame und eine JPanel.JMenuBar wird nicht angezeigt

Meine Klasse erweitert JPanel und hat eine paint Methode geerbt (bereits mit super.paint(g)).

Ich möchte JMenuBar einige JLabels und JTextFields auf meinem anzuzeigen (ich weiß, das ist nicht der Zweck davon)

Hier ist mein Code:

public void createMenuBar(){ 

    menuBar = new JMenuBar(); 
    menuBar.setBounds(0,0,1463,29); 
    menuBar.setLayout(null); 
    this.add(menuBar); 

    ipLbl = new JLabel("IP-Adresse:"); 
    ipLbl.setBounds(5,2,150,25); 
    ipLbl.setLabelFor(ip); 
    menuBar.add(ipLbl); 

    ip = new JTextField(); 
    ip.setBounds(150,2,100,25); 
    menuBar.add(ip); 
} 

Ich rufe diese Methode nach dem JFrame Erstellen , aber direkt bevor Sie setVisible(true) tun.

Look:

public IceHockey(){ 

    try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e){} 

    fenster = new JFrame("IceHockey"); 
    fenster.setSize(1479, 941); 
    fenster.setLayout(null); 
    fenster.addKeyListener(this); 
    fenster.addMouseListener(this); 
    fenster.setResizable(false); 
    fenster.setLocationRelativeTo(null); 

    fenster.setContentPane(this); 

    this.addKeyListener(this); 
    this.addMouseListener(this); 

    createMenuBar(); 

    fenster.setVisible(true); 
    fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

} 
+0

** Don‘ t verwende ein Null-Layout !!! **. Dies wurde bereits in einer Ihrer früheren Postings vorgeschlagen: http://stackoverflow.com/questions/36751366/some-swing-components-not-showing-on-jframe. Achten Sie auf Vorschläge. Wir geben ihnen einen Grund. Lesen Sie das Swing-Tutorial unter [Verwendung von Menüs] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html) für ein funktionierendes Beispiel. Der Code zeigt Ihnen auch, wie Sie Ihre Klasse besser strukturieren können. – camickr

+0

camickr Ich weiß, aber dieses Programm ist nur für mich und sogar mein Lehrer in der Schule sagte uns, dass wir Null-Layouts verwenden können. Es liegt also an mir, was ich benutze! Außerdem ist das Null-Layout so einfach zu benutzen! –

+0

'Außerdem ist das Null-Layout so einfach zu benutzen! '- Nein, ist es nicht. Sie haben absolut keine Ahnung, wie groß eine Komponente sein sollte, um richtig angezeigt zu werden. Hardcoding-Zufallszahlen sind Zeitverschwendung und werden nur in der Zukunft Probleme verursachen, insbesondere wenn Änderungen vorgenommen werden müssen. Einfache Dinge wie das Ändern einer Schriftart verursachen Probleme. Nur weil du etwas tun kannst, heißt das nicht, dass du es tun solltest. Lernen Sie Swing richtig zu benutzen! Du hast die Swing-Grundlagen noch nicht einmal gelernt (oder du würdest diese Frage nicht stellen), also hast du keine Ahnung, was einfach ist oder nicht. Das kommt nur aus Erfahrung. – camickr

Antwort

1

Nach dem MenuBar erstellen, ich glaube, Sie immer noch, es zu Ihrem JFrame hinzufügen müssen. Ändern createMenuBar(), um die JMenuBar statt Leere zurück, dann können Sie schreiben folgendes:

fenster.setJMenuBar(createMenuBar()); 

Ich bin unklar, was die diese in Ihrem Code ist für createMenuBar(), aber ich bin Raten ist es nicht Fenster ist noch etwas, wo das Hinzufügen erlaubt ist.

+0

"Dies" ist das erweiterte JPanel ^^ –

2

Sie die Menüleiste mit fenster.setJMenuBar(menuBar);

zum Rahmen hinzufügen können, wenn Sie die Menüleiste hinzufügen möchten die JPanel diesen Beitrag einen Ansatz hat Sie verwenden können:

add JMenuBar to a JPanel?