当前位置: 首页 > 面试题库 >

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

陶法
2023-03-14
问题内容

假设您在NxN网格中有一个JButton的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);
        }
    }

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

因为每个按钮在本地实例化为“ b”,所以当前无法获得每个按钮的全局可访问名称。如何独立访问每个按钮?像JButton []
[]这样的数组可以容纳对所有按钮的引用吗?如何在上面的代码中进行设置?

任何输入表示赞赏。

谢谢。


问题答案:

您可以,

1) putClientProperty

buttons[i][j].putClientProperty("column", i);
buttons[i][j].putClientProperty("row", j);
buttons[i][j].addActionListener(new MyActionListener());

public class MyActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton btn = (JButton) e.getSource();
        System.out.println("clicked column " + btn.getClientProperty("column")
                + ", row " + btn.getClientProperty("row"));
}

2)ActionCommand



 类似资料:
  • ('SPARK_FILES_DIR:',U'/H/TMP/Spark-76BDBD48-CBB4-4E8F-971A-383B899F79B0/userfiles-EE6DCDEC-B320-433B-8491-311927C75FE2')('inputfile name:',[U'empfile1.csv'])('input file path:',U'/H/TMP/Spark-76BDBD48

  • 问题 你想要扩展函数中的某个闭包,允许它能访问和修改函数的内部变量。 解决方案 通常来讲,闭包的内部变量对于外界来讲是完全隐藏的。 但是,你可以通过编写访问函数并将其作为函数属性绑定到闭包上来实现这个目的。例如: def sample(): n = 0 # Closure function def func(): print('n=', n) #

  • 问题内容: 有什么方法可以访问Java中的本地内部类的方法。以下代码是我之前尝试过的示例代码。据此,访问该方法的机制是什么? 问题答案: 正如ILikeTau的评论所说,您无法访问在方法中定义的类。您可以在方法之外定义它,但是另一种可能性是定义一个(或抽象类)。这样,代码仍将位于您的方法内部,并且可以访问该方法中定义的变量和参数(如果将整个类移到外面,则无法执行此操作)。就像是: 注意: 未测试

  • 问题内容: 我正在试用Go的新模块系统,无法访问本地软件包。以下项目位于我的gopath外的桌面上的文件夹中。 我的项目结构如下: 告诉我 问题答案: 我强烈建议您使用go工具链,它可以解决这些问题。带vscode-go插件的Visual Studio Code非常有用。 这里的问题是Go需要相对于您或import语句的相对路径。根据您所在的位置,导入路径也应包括该位置。在这种情况下,import

  • 我已经创建了一个AEMServlet。现在我已经用servlet本身创建了OSGi配置(如下所示的数组类型的MULTI_字段),因为它也被定义为服务。现在,我的需求是如何在doGet方法中访问这个osgi配置。下面是servlet的代码。

  • 问题内容: 我有以下Java代码- 我得到的错误是 如何正确访问注释字段? 问题答案: 默认情况下,注释在运行时不可用。您需要添加到注释定义以使其可用于运行时处理。例如: 在实践中,还应在实际尝试从字段中删除注释之前,检查该字段是否确实具有给定的注释。 另外,指定注释所属的元素类型也是一种好习惯。因此,您的示例将是: