gpt4 book ai didi

java - 如何在 JButton 矩阵中创建事件?

转载 作者:行者123 更新时间:2023-11-30 02:50:03 25 4
gpt4 key购买 nike

我正在尝试创建一个MouseListener。当我将鼠标悬停在 JButton 上时,我希望它更改其背景颜色以及数组中的下一个 JButton。例如,当我悬停 JButton[0][0] 时,它会更改 JButton[0][0]JButton[1][0 ]JButton[2][0] 等等。

以下是我创建 JButton 数组的方法:

for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
btn[i][j] = new JButton();
btn[i][j].addMouseListener(this);
btn[i][j].setBackground(Color.black);
panel.add(btn[i][j]);
}
}

及其MouseListener:

@Override
public void mouseEntered(MouseEvent me) {
JButton event = (JButton) me.getSource();
int i = 0;
int j = 0;
btn[i][j] = event;
btn[i][j].setBackground(Color.blue);
}

@Override
public void mouseExited(MouseEvent me) {
JButton event = (JButton) me.getSource();
int i = 0;
int j = 0;
btn[i][j] = event;
btn[i][j].setBackground(Color.black);

}

我尝试过btn[i+1][j].setBackground(Color.black);,它设置了蓝色[1][0][2][0]...但不是[i+1][j]

运行程序时没有错误。

Here

上图显示了我正在尝试做的事情。

最佳答案

无需引用该数组 - 您所需要做的就是更改通过 getSource() 返回的按钮的状态。例如,

@Override
public void mouseEntered(MouseEvent me) {
JButton event = (JButton) me.getSource();
event.setBackground(Color.blue);
}

对于 mouseExited 也类似。

如果您需要知道特定鼠标的 i 和 j,则使用嵌套的 for 循环迭代数组,

int i = 0;
int j = 0;
for (int i2 = 0; i2 < btn.length; i2++) {
for (int j2 = 0; j2 < btn[i2].length; j2++) {
if (event == btn[i2][j2]) {
i = i2;
j = j2;
}
}
}

// i and j set to appropriate value

或者获取并设置按钮的客户端属性,类似于here 。如果您需要更详细的帮助,请创建并发布有效的 minimal example program

关于java - 如何在 JButton 矩阵中创建事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986231/

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