簡體   English   中英

Java JmenuItem在單擊時不起作用

[英]Java JmenuItem do something when clicked not working

我目前正在嘗試制作一個帶有2個選項的菜單的GUI。 一種是“默認設置”,另一種是“自定義設置”。 當您單擊任意一個時,它將帶您到新的jPanel,它將顯示該面板的正確窗口,文本框等。 但是,我似乎無法讓mouseClicked動作真正在面板之間切換。 作為測試,我在每個面板上都有一個簡單的jLabel,它在默認面板上顯示“ Default”,在自定義面板上顯示“ custom”,並且分別單擊每個菜單項時,都應該在它們之間切換。 這是我當前的代碼:

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正常顯示,但是當我按任意一個菜單項單擊時,實際上什么也沒有發生。 有任何想法嗎?

  1. 您不應該使用MouseListener。 相反,您應該將ActionListener添加到菜單項。 閱讀Swing教程中有關如何使用菜單的部分, 獲取更多信息。

  2. 要交換組件時,應該使用CardLayout。 請參閱同一教程中的“ 如何使用卡片布局 ”。

您需要ActionListener

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

    }
});

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM