gpt4 book ai didi

java - 在 Java GUI 中绘制 JButton[][] 网格

转载 作者:行者123 更新时间:2023-12-01 18:40:28 24 4
gpt4 key购买 nike

我有一个 JButton 的 2D 数组,我希望用户在单击鼠标时能够在其上画线。 Grid of Buttons Image

目前,当用户单击网格中的特定 JButton 时,它会变成红色。我希望能够按住左键单击并将鼠标悬停在我想要变成红色的 JButton 上。这是我到目前为止所拥有的

      for (int i = 0; i < 40; i++) {
for (int j = 0; j < 40; j++) {
if (grid[i][j] != grid[0][0] && grid[i][j] != grid[39][39]) {

grid[i][j].addMouseListener(new java.awt.event.MouseAdapter(){

@Override
public void mousePressed(java.awt.event.MouseEvent evt) {
JButton button = (JButton) evt.getSource();
button.setBackground(Color.red);

paintedButtons.add(button);
button.transferFocus();
paintedButtons.add(button);
}

// public void mouseEntered(MouseEvent evt) {
// JButton button = (JButton) evt.getSource();
// button.setBackground(Color.red);
//
// paintedButtons.add(button);
//
// }
});
}
grid[0][0].setBackground(Color.GRAY);
grid[39][39].setBackground(Color.GREEN);
}
}

mouseEntered 方法几乎可以满足我的要求。问题是我只希望在按住左键单击时发生。谢谢。

最佳答案

您可以通过在 mouseEntered 事件中使用 javax.swing.SwingUtilities 来检查鼠标左键是否被按下:

@Override
public void mouseEntered(MouseEvent evt) {
if (SwingUtilities.isLeftMouseButton(evt))
button.setBackground(Color.BLUE);
}

关于java - 在 Java GUI 中绘制 JButton[][] 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59942354/

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