2013-05-31 3 views
0

Пример моей проблемы:Как добавить компоненты качания, которые находятся за пределами основного файла?

У меня есть основной файл:

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: Исправлена ​​ошибка. См. Код выше.

+0

Вы уверены, что не используете java.swt.MenuBar? – MadProgrammer

+0

два класса находятся в одном каталоге? – htz

+0

Даниэль нашел ответ. Я случайно сделал это методом, а не конструктором. –

ответ

2

Вы случайно определили свой конструктор как метод. Измените подпись на public MenuBar() (без возвращаемого значения), и она должна работать.

public class MenuBar extends JMenuBar 
{ 
    public MenuBar() 
    { 
     // constructor code 
    } 
} 
+0

О, боже, ты совершенно прав, сэр. Как глупо со мной. Большое спасибо, он работает сейчас. –

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

  • Нет связанных вопросов^_^