Пример моей проблемы:Как добавить компоненты качания, которые находятся за пределами основного файла?
У меня есть основной файл:
public class APP extends JFrame
{
private Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
public APP()
{
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(new MenuBar());
JPanel content = new JPanel(new GridLayout(0, 8, 2, 2));
add(new JScrollPane(content, 22, 32), BorderLayout.CENTER);
pack();
setLocationByPlatform(true);
setResizable(false);
setVisible(true);
}
public Dimension getPreferredSize()
{
return new Dimension(screen.width/10 * 7, screen.height/10 * 6);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
APP program = new APP();
}
});
}
}
И у меня есть внешний объект, который я пытаюсь добавить как JMenuBar:
public class MenuBar extends JMenuBar
{
public MenuBar()
{
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
add(file);
JMenuItem item;
item = new JMenuItem("Add New");
item.setMnemonic(KeyEvent.VK_N);
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
ActionEvent.ALT_MASK));
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//createThumb();
}
});
file.add(item);
}
}
Однако, моя панель меню вообще не отображается. Когда я создаю функцию JMenuBar внутри основного файла, например ... createMenuBar() и имеет в нем один и тот же точный код, он появляется, когда я добавляю его в фрейм, но когда у меня есть его как внешний объект, не делает.
Что я делаю неправильно?
EDIT: Исправлена ошибка. См. Код выше.
Вы уверены, что не используете java.swt.MenuBar? – MadProgrammer
два класса находятся в одном каталоге? – htz
Даниэль нашел ответ. Я случайно сделал это методом, а не конструктором. –