2013-09-23 42 views
0

我目前正在尝试制作一个带有2个选项的菜单,您可以从中进行选择。一个是“默认设置”,另一个是“自定义设置”。当你点击任何一个时,它会带你到新的jPanel,它将显示该面板的正确窗口,文本框等。但是,我似乎无法获得mouseClicked操作来实际切换面板。作为测试,我在每个面板上都有一个简单的jLabel,默认面板显示为“默认”,自定义面板显示“自定义”,每个菜单项分别点击时应在它们之间切换。这里是我当前的代码: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); 
    } 
}); 

代码运行和GUI显示就好了,但是当我点击任何菜单项,因为它应该没有实际发生。有任何想法吗?

回答

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

这取决于你的用例。 –

相关问题