Drawing on a JButton[][] grid in a Java GUI
我有一个 JButtons 的二维数组,我希望用户能够在单击鼠标时画线。按钮网格图像
目前,当用户单击网格中的特定 JButton 时,它会变为红色。我希望能够按住左键单击并将鼠标悬停在我想变成红色的 JButtons 上。这是我到目前为止所拥有的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 事件中使用
1 2 3 4 5 | @Override public void mouseEntered(MouseEvent evt) { if (SwingUtilities.isLeftMouseButton(evt)) button.setBackground(Color.BLUE); } |