Панель меню Java GUI не отображается - PullRequest
2 голосов
/ 30 декабря 2011

Есть идеи, почему строка меню menuBar не отображается?все выглядит хорошо для меня.

import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class mySticky extends JFrame implements ActionListener{

    //weStart!

    JFrame frame = new JFrame("Sticky Note");
    JMenuBar menuBar = new JMenuBar();

    JMenu noteMenu = new JMenu("Note");
    JMenuItem newNote = new JMenuItem("New Note");
    JMenuItem open = new JMenuItem("Open");
    JMenuItem saveAs = new JMenuItem("Save As");
    JMenuItem save = new JMenuItem("Save");

    //Constructor

    public mySticky(){

        setSize(400,300);
        setLocation(500,250);
        setTitle("Sticky Note");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        menuBar.add(noteMenu);

        noteMenu.add(newNote);
        noteMenu.add(open);
        noteMenu.add(saveAs);
        noteMenu.add(save);
        frame.setJMenuBar(menuBar);            
    }

    public void actionPerformed (ActionEvent e){           

    }


    public static void main (String [] args ){

        mySticky sticky = new mySticky ();
        sticky.setVisible(true);

    }
}

Ответы [ 2 ]

4 голосов
/ 30 декабря 2011

Вы добавляете меню в frame, которое никогда не добавляется ни в один пользовательский интерфейс.Замените

frame.setJMenuBar(menuBar);

на

setJMenuBar(menuBar);

, и ваша строка меню станет видимой.Или вы должны добавить frame в пользовательский интерфейс.Не уверен, чего вы пытались достичь.

И вы должны обернуть код вашего основного метода в Runnable и выполнить его в EDT (например, используя EventQueue.invokeLater)

3 голосов
/ 30 декабря 2011

Вместо frame.setJMenuBar(menuBar), попробуйте this.setJMenuBar(menuBar) в вашем конструкторе.

...