2015-06-28 6 views
3

Я пытаюсь создать образец программы, в которой есть меню и некоторые параметры на нем. Проблема. Когда я запускаю программу, меню не появляется, пока окно не будет изменено. Я не уверен, в чем проблема, и я был бы признателен за любую помощь.JMenu не отображается до изменения размера окна

Вот код, который я работаю с:

P.S. Я уже импортировал все библиотеки, которые мне нужны.

public class TextEditor { 


public static void main(String[] args) { 
    JFrame f = new JFrame(); 

    f.setSize(700,500); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setResizable(true); 
    f.setVisible(true); 

    JMenuBar menuBar = new JMenuBar(); 
    f.setJMenuBar(menuBar); 

    JMenu file = new JMenu("File"); 

    menuBar.add(file); 

    JMenuItem open = new JMenuItem("Open File"); 

    file.add(open); 

} 

} 

ответ

2

Вы задающих размеры и установка JFrame видна перед тем добавить свою JMenuBar, так что не удивительно, что в строке меню не отображается изначально, так как он никогда не оказывается изначально. Ваше решение состоит в том, чтобы добавить JMenuBar до упаковки и визуализировать ваш графический интерфейс, и таким образом ваша проблема решена.

import java.awt.Dimension; 
import java.awt.event.KeyEvent; 
import javax.swing.*; 

public class TextEditor { 

    public static void main(String[] args) { 
     JFrame f = new JFrame("Foo"); 
     f.add(Box.createRigidArea(new Dimension(700, 500))); 
     JMenuBar menuBar = new JMenuBar(); 
     f.setJMenuBar(menuBar); 
     JMenu file = new JMenu("File"); 
     file.setMnemonic(KeyEvent.VK_F); 
     menuBar.add(file); 
     JMenuItem open = new JMenuItem("Open File"); 
     file.add(open); 

     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     f.pack(); 
     f.setVisible(true); 
    } 
} 
+0

Спасибо, что решил мою проблему – yj2000

+0

@ yj2000: добро пожаловать. –

Смежные вопросы