У меня есть ситуация, когда я хотел бы иметь возможность узнать высоту и ширину JFrame, когда пользователь перетаскивает свою мышь, чтобы изменить размер кадра.
Я исследовал это, и ответы, представленные на следующий вопрос, помогли мне немного, но не полностью: Прослушивание событий изменения размера JFrame, когда пользователь перетаскивает свою мышь?
Моя проблема в том, что мой класс «HSFrame» расширил JFrame и реализовал ActionListener, MouseMotionListener (однако ActionListener не имеет отношения к этому вопросу). Этот вопрос относится к MouseMotionListener.
У меня есть отдельный класс под названием «CanvasPanel», который расширяет JPanel - здесь я использую графический объект для обновления информации в реальном времени путем рисования строк.
public void mouseMoved(MouseEvent e)
{
}
public void mouseDragged(MouseEvent e)
{
validate();
canvas.repaint();
}
Это фрагмент кода из моего класса "HSFrame" (расширяет JFrame, реализует MouseMotionListener). В этом примере кода «canvas» является объектом CanvasPanel, и я вызываю его метод repaint () всякий раз, когда вызывается MouseDragged.
Я решил использовать MouseMotionListener, потому что это (предположительно) даст мне обновления в реальном времени, а не метод componentResized () ComponentListener (который привязан к MouseReleased).
Все прекрасно обновляется на 100%, когда я изменяю размер рамки в верхнем левом углу. Значения высоты, ширины, X и Y перекрашиваются идеально.
Но он не обновляется в режиме реального времени, когда я изменяю размер в правом нижнем углу. И я не знаю как вы, но я предпочитаю изменять размеры в правом нижнем углу.
В самом классе «CanvasPanel» я расширил ComponentListener и добавил туда прослушиватель объекта «HSFrame» - он не обновляется в режиме реального времени, что было хорошо, но он перерисовывает высоту и ширину после мышь отпущена независимо от того, с какого угла был изменен размер HSFrame.
Основной вопрос:
Можно ли заставить MouseMostionListener знать, что я изменяю размер JFrame из правого нижнего угла? Он слышит, когда я перемещаю рамку, щелкая и перетаскивая строку заголовка, и слышит, когда я изменяю размер из верхнего левого угла (который также взаимодействует с строкой заголовка). Он просто не слышит, когда что-то идет к другим границам JFrame.