Рисование на сетке JButton [] [] в Java GUI - PullRequest
0 голосов
/ 28 января 2020

У меня есть двумерный массив кнопок J, которые я хотел бы, чтобы пользователь мог рисовать линии при щелчке мыши. Сетка кнопок Изображение

В настоящее время, когда пользователь нажимает указанную кнопку c J в сетке, он становится красным. Я хочу иметь возможность удерживать нажатой левую кнопку мыши и наводить курсор на кнопки, которые я хочу покраснеть. Вот что у меня есть

      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 почти делает то, что я хочу. Проблема в том, что я хочу, чтобы это происходило только тогда, когда я нажимаю левую кнопку мыши. Спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете проверить, нажата ли левая кнопка мыши, используя javax.swing.SwingUtilities в событии mouseEntered:

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