Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java GUI中的JButton[]]网格上绘图_Java_Swing_User Interface_Mouseevent_Jbutton - Fatal编程技术网

在Java GUI中的JButton[]]网格上绘图

在Java GUI中的JButton[]]网格上绘图,java,swing,user-interface,mouseevent,jbutton,Java,Swing,User Interface,Mouseevent,Jbutton,我有一个JButton的2D数组,我希望用户在单击鼠标时能够在上面画线 当前,当用户单击网格中的特定JButton时,它将变为红色。我希望能够按住鼠标左键并将鼠标悬停在我想变成红色的按钮上。这是我到目前为止所拥有的 for (int i = 0; i < 40; i++) { for (int j = 0; j < 40; j++) { if (grid[i][j] != grid[0][0] &&

我有一个JButton的2D数组,我希望用户在单击鼠标时能够在上面画线

当前,当用户单击网格中的特定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);
            }
       }

for(int i=0;i<40;i++){
对于(int j=0;j<40;j++){
if(grid[i][j]!=grid[0][0]&grid[i][j]!=grid[39][39]){
grid[i][j].addMouseListener(新java.awt.event.MouseAdapter(){
@凌驾
public void mousePressed(java.awt.event.MouseEvent evt){
JButton button=(JButton)evt.getSource();
按钮。背景(颜色。红色);
绘制按钮。添加(按钮);
按钮。transferFocus();
绘制按钮。添加(按钮);
}
//公共无效mouseenterned(MouseEvent evt){
//JButton button=(JButton)evt.getSource();
//按钮。背景(颜色。红色);
//
//绘制按钮。添加(按钮);
//                            
//                        }
});
}
网格[0][0]。收进背景(颜色.灰色);
网格[39][39]。背景(颜色.绿色);
}
}

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

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

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

欢迎来到SO。请坐一会儿看看。请回答您的问题并发布您的代码。这正是我要找的。谢谢你!