Как создать графический объект java swing, который будет реагировать на щелчки мышью? - PullRequest
0 голосов
/ 23 ноября 2011

Мне нужно динамически рисовать графический элемент (квадрат) в разных позициях Canvas, и мне нужно слушать щелчки мыши, чтобы изменить место моего квадрата. Как добавить слушателя мыши к графическому объекту? Должен ли я использовать другой подход?

int x = 0;
int y = 0;
 Graphics g = getGraphics(); // get Graphics context
                  g.setColor(Color.red);
          g.fillRect( x - 25, y - 15, 60, 30 );
          g.setColor(Color.black);
          g.drawRect( x - 25, y - 15, 60, 30 );
                  g.dispose();

1 Ответ

1 голос
/ 23 ноября 2011

Я бы, вероятно, использовал JPanel в качестве дочернего элемента вашего более крупного компонента, который формирует холст. JPanel, поскольку он является подклассом JComponent, позволяет вам как добавлять слушателя мыши с помощью addMouseListener(), так и переопределять его paintComponent () метод.

Если вы хотите переместить квадрат, просто переместите JPanel.

(в этом случае, если это квадрат или прямоугольник, вам даже не нужно переопределять paintComponent, вы можете просто сделать это с помощью соответствующих вызовов setBorder и setBackground.)


Другим подходом может быть использование JPanel в качестве всего холста, переопределение paintComponent для рисования чего угодно, addMouseListener на JPanel, а затем ручное определение того, происходят ли события прослушивателя мыши в геометрии вашего графического элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...