gpt4 book ai didi

java - MenuListener 实现,如何检测点击了哪个 JMenu?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:19 26 4
gpt4 key购买 nike

如果我像这样定义了 JMenuJMenuBar:

private JMenuBar jMenuBar;
private JMenu jMenu1;

jMenuBar = new JMenuBar();
jMenu1 = new JMenu();
jMenu1.setText("ABOUT");

//and here add a MenuListener so that i can detect when a menu is clicked:
jMenu1.addMenuListener(this);

jMenuBar.add(jMenu1);
setJMenuBar(jMenuBar);


//and here i implement the menulisteners

public void menuSelected(MenuEvent e) {
//my logic here
}
public void menuDeselected(MenuEvent e) {}
public void menuCanceled(MenuEvent e) {}

现在一切正常。但问题是如果我有不止一个菜单,我如何区分两者。就像在菜单监听器中一样,我怎么知道点击来自菜单 1 还是另一个菜单 2?

我的意思是如果我有另一个菜单并且我也为这个菜单添加菜单监听器:

jMenu2.addMenuListener(this);

然后我无法区分点击来自哪个菜单。我该怎么做?

最佳答案

您可以使用MenuEventgetSource() 方法类(class)。或者您也可以将单独的监听器作为匿名类添加到两个菜单。

public void menuSelected(MenuEvent e) {
//Make sure jMenu1 and jMenu2 are accessible in here.
if(e.getSource()==jMenu1)
operationForMenu1();
else if(e.getSource()==jMenu2)
operationForMenu2();
}

   jMenu1.addMenuListener(new MenuListener() {
@Override
public void menuSelected(MenuEvent arg0) {
// operation here.
}

@Override
public void menuDeselected(MenuEvent arg0) {
}

@Override
public void menuCanceled(MenuEvent arg0) {
}
});
jMenu2.addMenuListener(new MenuListener() {
@Override
public void menuSelected(MenuEvent arg0) {
// operation here.
}

@Override
public void menuDeselected(MenuEvent arg0) {
}

@Override
public void menuCanceled(MenuEvent arg0) {
}
});

如果您选择第二个选项,那么将很容易使用 ActionListener 而不是 MenuListener。 (仅当您不想对 menuCanceled 和 menuDeselected 进行操作时)(按照@Kleopatra 在评论中的建议删除了它)

关于java - MenuListener 实现,如何检测点击了哪个 JMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8589605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com