gpt4 book ai didi

java - swing JMenu 检索所选项目的路径

转载 作者:行者123 更新时间:2023-12-02 05:08:47 25 4
gpt4 key购买 nike

我正在尝试将 Jmenu 集成到我的 java 应用程序中,但我很难检索所选项目的所选路径。

我发现了几个使用 MenuSelectionManager 类的示例,如下所示:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class selectedPath {
public static void main(final String args[]) {
JFrame frame = new JFrame("MenuSample Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();

// File Menu, F - Mnemonic
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
menuBar.add(fileMenu);

// File->New, N - Mnemonic
JMenuItem newMenuItem = new JMenuItem("New");
fileMenu.add(newMenuItem);

newMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
MenuElement[] eles = MenuSelectionManager.defaultManager().getSelectedPath();
System.out.println(eles.length);
for (MenuElement ele : eles) {
System.out.println(ele);
}
MenuSelectionManager.defaultManager().clearSelectedPath();
}
});
frame.setJMenuBar(menuBar);
frame.setSize(350, 250);
frame.setVisible(true);
}
}

但它不起作用,因为 MenuElement 数组为空。有什么建议吗?

谢谢

最佳答案

问题在于,当调用 actionPerformed 时,MenuSelectionManager 已被清除。

调用按以下顺序进行:

    msm.clearSelectedPath(); // msm is the MenuSelectionManager
menuItem.doClick(0); // This eventually triggers your actionPerformed

但问题是你想用它做什么?您显然知道在哪个 JMenutItem 上执行了点击(e.getSource() 返回相关的 JMenuItem),并且您可以轻松返回组件层次结构来检索所选菜单的完整路径,所以我想知道您想用这样的代码实现什么目的。

关于java - swing JMenu 检索所选项目的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531467/

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