Java 是否将ActionListener添加到JMenuItem Netbeans?

Java 是否将ActionListener添加到JMenuItem Netbeans?,java,swing,netbeans,actionlistener,jmenuitem,Java,Swing,Netbeans,Actionlistener,Jmenuitem,我在Netbeans中有一个GUI。。我唯一的问题是将事件添加到我的JMenuItems中。我当前正在加载一个字符串[]作为我的菜单列表,为.length添加一个新的JMenuItem 然后,我的问题是如何为JMenuItem添加操作事件。。我无法在GUI窗口中设置事件,因为在加载游戏名之前没有创建该项。您必须将每个菜单项传递给操作侦听器。一种可能性是让类实现ActionListener接口并定义actionPerformed方法 在本例中,类的实例还充当ActionListener。对于简单的

我在Netbeans中有一个GUI。。我唯一的问题是将事件添加到我的JMenuItems中。我当前正在加载一个字符串[]作为我的菜单列表,为.length添加一个新的JMenuItem


然后,我的问题是如何为JMenuItem添加操作事件。。我无法在GUI窗口中设置事件,因为在加载游戏名之前没有创建该项。

您必须将每个菜单项传递给操作侦听器。一种可能性是让类实现ActionListener接口并定义actionPerformed方法

在本例中,类的实例还充当ActionListener。对于简单的事情,还可以使用匿名类

    private void addToGamePanel(){

        String[] gameNames =  con.getGameNames();
        for (int i = 0; i < gameNames.length; i++) {
            JMenuItem item = new JMenuItem(gameNames[i])
            item.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JMenuItem menuItem = (JMenuItem) e.getSource();
                    // do something with your menu item
                    String text = menuItem.getText();
                }
            });
            jMenu2.add(item);
         }
    }

如果你有一些更高级的需求,你可以考虑定义一个单独的ActualListor或者更好的动作,看看:

你想登记哪些事件侦听器?但我只是想知道如何将事件/操作添加到JMenuItems中。。一个朋友说了一些关于一个监听器的事情,但我真的不知道怎么做..你正在为字符串[]gameNames中的每个项目添加一个菜单项。您是否也有一个事件侦听器数组?或者他们应该使用同一个听众吗?我猜一个听众就足够了。。它应该只返回被剪辑的项目的名称…问题是它在GUI主界面中。。。allready实现了java.swingConsider,事先向问题中添加了这样的相关信息。什么问题,是否有错误消息?你的意思是一个主要的方法?试一下第二个问题,如果有帮助的话,请投票赞成,并考虑接受它,如果它解决了你的问题。请参阅:您实际上正在创建ActionListener的匿名实例,如果您实现actionPerformed方法,就可以了。
class YourClass implements ActionListener {

    [...]

    private void addToGamePanel(){

        String[] gameNames =  con.getGameNames();
        for (int i = 0; i < gameNames.length; i++) {

            JMenuItem item = new JMenuItem(gameNames[i])
            item.addActionListener(this);
            jMenu2.add(item);
         }        
    }

    public void actionPerformed(ActionEvent e) {
        JMenuItem menuItem = (JMenuItem)(e.getSource());

        // do something with your menu item
        String text = menuItem.getText();

    }
}
    private void addToGamePanel(){

        String[] gameNames =  con.getGameNames();
        for (int i = 0; i < gameNames.length; i++) {
            JMenuItem item = new JMenuItem(gameNames[i])
            item.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JMenuItem menuItem = (JMenuItem) e.getSource();
                    // do something with your menu item
                    String text = menuItem.getText();
                }
            });
            jMenu2.add(item);
         }
    }