У меня возникла ситуация, когда я хотел бы знать высоту и ширину 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). В этом примере кода «холст» — это объект CanvasPanel, и я вызываю его метод repaint() всякий раз, когда вызывается MouseDragged.
Я решил использовать MouseMotionListener, потому что это (предположительно) будет давать мне обновления в реальном времени, в отличие от метода componentResized() ComponentListener (который привязан к MouseReleased).
Все обновляется на 100% идеально, когда я изменяю размер кадра из верхнего левого угла. Значения высоты, ширины, X и Y полностью перерисовываются.
Но он не обновляется в режиме реального времени, когда я изменяю размер из правого нижнего угла. Не знаю, как вы, а я предпочитаю изменять размеры снизу справа.
В самом классе «CanvasPanel» я расширил ComponentListener и добавил туда прослушиватель для объекта «HSFrame» — он не обновляется в реальном времени, что было нормально, но перерисовывает высоту и ширину после отпускания мыши. , независимо от того, с каким углом был изменен размер HSFrame.
Основной вопрос: можно ли заставить MouseMostionListener знать, что я изменяю размер JFrame снизу справа? Он слышит, когда я перемещаю рамку, щелкая и перетаскивая строку заголовка, и слышит, когда я изменяю размер из верхнего левого угла (который также взаимодействует со строкой заголовка). Он просто не слышит, когда что-то переходит к другим границам JFrame.