gpt4 book ai didi

java - 从按下的 JMenuItem 获取文本?

转载 作者:行者123 更新时间:2023-12-01 16:52:45 25 4
gpt4 key购买 nike

目前使用SWING来实现JMenuBar,其中有2个不同的JMenus。一种称为 gameMenu,另一种称为 addMenuGame。

我的界面 Controller 中的gameMenu中有几个JMenuItem,它们都是用这个方法实现的。

public void addGameMenu(JMenu control) {
String fileName = "gamemodes.txt";
try {

FileReader inputFile = new FileReader(fileName);

BufferedReader bufferReader = new BufferedReader(inputFile);

String line;

while ((line = bufferReader.readLine()) != null) {

String split[] = line.split("#");
for (int i = 0; i < split.length; i++) {
control.add(split[i]);
}

}

bufferReader.close();
} catch (Exception e) {
System.out.println("Fejl ved linje:" + e.getMessage());
}

}

它的作用是从文本文件中读取每一行,并将其添加到名为 gameMenu 的 JMenu 中。但是,我只能将 Action 监听器添加到 JMenu,而不是 JMenu 的 JMenuItem。在 JFrame main void 中,我是这样实现的:

public class index extends javax.swing.JFrame {

QuizzControlHandler dd = new QuizzControlHandler();
private JMenuItem dc;

/**
* Creates new form index
*/
public index(){

initComponents();
dd.addGameMenu(menuGame);

}

}

这将正确填充我的菜单,但是,我需要检索用户单击的内容。

最佳答案

However, I can only add actionlisteners to the JMenu, and not the JMenuItem,

用户单击JMenuItem,因此您需要将ActionListener 添加到JMenuItem 而不是JMenu。

在调用 addGameMenu(...) 之前,您可以创建一个由所有 JMenuItems 共享的 ActionListener,代码如下:

ActionListener al = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JMenuItem menuItem = (JMenuItem)e.getSource();
System.out.println(menuItem.getText());
}
}

然后您将更改 addGameMenu(JMenu control, ActionListener al) 以拥有第二个参数。

然后在您更改的方法中:

//control.add(split[i]);
JMenuItem menuItem = new JMenuItem( split[I] );
menuItem.addActionListener( al );
control.add( menuItem );

关于java - 从按下的 JMenuItem 获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36671279/

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