相关疑难解决方法(0)

将JMenuItem的名称赋予它的ActionListener

我怎样才能给出附在他们身上JMenuItem的名字ActionListener

我有一个由单个处理的菜单系统,ActionListener这些菜单中的一些项目重复名称.这不是用户端的问题,因为它显然是做什么的; 事实上,如果他们有不同的名字会更加混乱.但是,在我的最后,我想要唯一地标记每个项目.

创建我的项目的部分如下所示:

String label = getLabel(forThisItem);
JMenuItem item = new JMenuItem(label);
item.setName(parentMenu.getName() + "_" + label);
item.addActionListener(actionListener);
parentmenu.add(item);
Run Code Online (Sandbox Code Playgroud)

使用getName()在事后(在此方法的范围之外)询问项目,给出我给它的名称,因为它应该,但输出

public void actionPerformed(ActionEvent ae) {
    String actionPerformed = ae.getActionCommand();
    System.out.println("actionPerformed: " + actionPerformed);
}
Run Code Online (Sandbox Code Playgroud)

是用户看到的,可能是重复的名称,由label我指定的名称,而不是我给它的唯一名称.

如何将正确的信息提供给ActionListener?

java user-interface swing menu actionlistener

2
推荐指数
1
解决办法
3276
查看次数

在GridLayout JPanel中访问本地定义的JButton

假设您在NxN网格中有一个JButtons的GridLayout,代码如下:

JPanel bPanel = new JPanel();
bPanel.setLayout(new GridLayout(N, N, 10, 10));
    for (int row = 0; row < N; row++)
    {
        for (int col = 0; col < N; col++)
        {
            JButton b = new JButton("(" + row + ", " + col + ")");
            b.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {

                }
            });
            bPanel.add(b);
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何在网格中单独访问每个按钮以通过setText()更改按钮的名称?这需要在实际按下相关按钮之外完成.

因为每个按钮在本地实例化为"b",所以当前不可能为每个按钮提供全局可访问的名称.如何独立访问每个按钮?像JButton [] []这样的数组是否可以保存对所有按钮的引用?如何在上面的代码中设置?

任何输入都表示赞赏.

谢谢.

java swing jbutton grid-layout

2
推荐指数
1
解决办法
1427
查看次数