java - JButton 操作已执行?

标签 java arrays jbutton

我创建了一个带有 10x10 网格的 Jframe/按钮。每个 jbutton 都是网格的一部分。我正在尝试如何影响通过 JFrame/button 按下的每个按钮,因为我想最终将其制作成战舰游戏。

frame.setLayout(new GridLayout(width,length));
            grid=new JButton[width][length]; 
            for(int y=0; y<length; y++){
                    for(int x=0; x<width; x++){
                            grid[x][y]=new JButton("("+x+","+y+")");     
                            frame.add(grid[x][y]);
                    }
            }

例如,我正在尝试一段基本代码,看看是否可以通过单击将 Jframe 的颜色更改为红色,但它似乎不起作用。

 public void actionPerformed(ActionEvent e){
           if( e.getSource() instanceof JButton) {
               ((JButton)e.getSource()).setBackground(Color.red);
           }
        }

有人有什么想法吗?

最佳答案

假设我们有一个按钮:JButton 按钮。要在按下按钮时调用操作,必须向其中添加操作监听器。有两种方法可以做到这一点(据我所知):

<强> ActionListener

我认为这种方法比第二种方法更常用。编写 IMO 也更容易、更快:

JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("button was clicked!");
    }
}

<强> Action

另一种 Action 监听器。功能和用途有些不同。但是,要实现与 ActionListener 行为类似的按钮,请执行以下操作:

Action buttonAction = new AbstractAction("Click me") {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("button was clicked!");
    }
}

JButton button = new JButton(action);

请注意,在这两个示例中我都使用匿名内部类。在大多数情况下,使用命名内部类甚至外部类更为可取。

<小时/>

ActionListenerAction 之间进行选择取决于具体情况(一如既往......叹息),恐怕我无法透露太多信息在这个问题上。谷歌是你的 friend 。快速搜索提供了来自 SO 的这篇文章: link

关于java - JButton 操作已执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255807/

相关文章:

Java从另一个类获取字符串返回null

c++ - 使用参数推导时如何停止模板递归?

php - 根据 HTML 选择选项在 PHP 中分配一个变量并将结果插入数据库表

java - 为什么我的 boolean 变量搞砸了?

java - 不要将 Android 上下文类放在静态字段中;这是内存泄漏

java - 将类型参数 k 添加到 meth() 是什么意思?

java - 鼠标悬停之前按钮不可见

java - 限制JButton可以被点击的次数?

java - 如何在 spring 中使用 change stream 监听多个集合

javascript - 显示数组项一次(点击)