0

我目前正在尝试使用一个菜单制作一个 GUI,该菜单有 2 个可供选择的选项。一种是“默认设置”,一种是“自定义设置”。当您单击其中任何一个时,它将带您进入新的 jPanel,该 jPanel 将为该面板显示正确的窗口、文本框等。但是,我似乎无法让 mouseClicked 动作在面板之间实际切换。作为测试,我在每个面板上都有一个简单的 jLabel,默认面板为“默认”,自定义面板为“自定义”,每个菜单项在分别单击时应在它们之间切换。这是我当前的代码:

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 显示得很好,但是当我单击任一菜单项时实际上什么都没有发生,这是应该的。有任何想法吗?

4

2 回答 2

0
  1. 您不应该使用 MouseListener。相反,您应该将 ActionListener 添加到菜单项。阅读 Swing 教程中有关如何使用菜单的部分以获取更多信息。

  2. 当您想要交换组件时,您应该使用 CardLayout。请参阅同一教程中的如何使用卡片布局

于 2013-09-23T15:40:08.850 回答
0

你需要ActionListener

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

    }
});

希望这可以帮助。

于 2013-09-23T15:41:18.200 回答