2013-09-23 1 views
0

В настоящее время я пытаюсь создать графический интерфейс с меню, в котором есть 2 варианта, которые вы можете выбрать. Один из них - «Настройки по умолчанию», а один - «Пользовательские настройки». Когда вы нажмете на одну из них, вы перейдете к новой jPanel, которая отобразит соответствующие окна, текстовые поля и т. Д. Для этой панели. Однако я не могу заставить действие mouseClicked фактически переключаться между панелями. В качестве теста у меня есть простая jLabel на каждой панели, где указано «Default» для панели по умолчанию и «custom» для пользовательской панели, и каждый элемент меню, при нажатии соответственно, должен переключаться между ними. Вот мой текущий код:Java JmenuItem что-то делать, когда не работает

frmLegitServerAdder = new JFrame(); 
frmLegitServerAdder.setTitle("Legit Server Adder 5 Million"); 
frmLegitServerAdder.setBounds(100, 100, 546, 468); 
frmLegitServerAdder.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

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

JMenu mnNewMenu = new JMenu("Settings"); 
menuBar.add(mnNewMenu); 

JMenuItem menuItemDefaultSettings = new JMenuItem("Default Settings"); 
mnNewMenu.add(menuItemDefaultSettings); 

JMenuItem menuItemCustomSettings = new JMenuItem("Custom Logon Settings"); 
mnNewMenu.add(menuItemCustomSettings); 


frmLegitServerAdder.getContentPane().setLayout(new CardLayout(0, 0)); 

final JPanel defaultSettingsPanel = new JPanel(); 
frmLegitServerAdder.getContentPane().add(defaultSettingsPanel, "name_416522810155567"); 
defaultSettingsPanel.setLayout(null); 

JLabel lblDefaultArea = new JLabel("Default Area"); 
lblDefaultArea.setBounds(217, 11, 90, 14); 
defaultSettingsPanel.add(lblDefaultArea); 

final JPanel customSettingsPanel = new JPanel(); 
frmLegitServerAdder.getContentPane().add(customSettingsPanel, "name_416549691176064"); 
customSettingsPanel.setLayout(null); 

JLabel lblCustomArea = new JLabel("Custom Area"); 
lblCustomArea.setBounds(235, 21, 46, 14); 
customSettingsPanel.add(lblCustomArea); 

menuItemDefaultSettings.addMouseListener(new MouseAdapter() 
{ 
    @Override 
    public void mouseClicked(MouseEvent e) 
    { 
     defaultSettingsPanel.setVisible(true); 
     customSettingsPanel.setVisible(false); 

    } 
}); 

menuItemCustomSettings.addMouseListener(new MouseAdapter() 
{ 
    @Override 
    public void mouseClicked(MouseEvent e) 
    { 
     defaultSettingsPanel.setVisible(false); 
     customSettingsPanel.setVisible(true); 
    } 
}); 

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

ответ

0
  1. Вы НЕ должны использовать MouseListener. Вместо этого вы должны добавить ActionListener в пункт меню. Прочтите раздел из учебника Swing по телефону How to Use Menus для получения дополнительной информации.

  2. Вы должны использовать CardLayout, если хотите заменить компоненты. См. How to Use Card Layout из того же урока.

0

Вам нужно ActionListener

menuItemDefaultSettings.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     defaultSettingsPanel.setVisible(true); 
     customSettingsPanel.setVisible(false); 

    } 
}); 

Надеется, что это помогает.

+0

Спасибо! это сработало. Целесообразно ли всегда просто использовать ActionListeners вместо конкретных слушателей в вашем коде? – user1806716

+0

Это зависит от вашего варианта использования. –

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