我有一种情况,我希望能够知道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对象,每当调用MouseDragged时,我都会调用它的repaint()方法.
我选择使用MouseMotionListener,因为这(假设)会给我实时更新,而不是ComponentListener的componentResized()方法(与MouseReleased相关联).
当我从左上角调整框架大小时,一切都完美地更新了100%.高度,宽度,X和Y值都完美重绘.
但是当我从右下角调整大小时,它不会实时更新.我不了解你,但我更喜欢从右下角调整大小.
在“CanvasPanel”类本身,我扩展了ComponentListener并在那里添加了一个“HSFrame”对象的监听器 – 它不会实时更新,这很好,但它确实在重放鼠标后重新绘制高度和宽度,无论HSFrame的大小调整了哪个角落.
主要问题:
是否有可能让MouseMostionListener知道我正在从右下角调整JFrame的大小?当我通过单击并拖动标题栏来移动框架时它会听到,当我从左上角调整大小(它也与标题栏交互)时它会听到.只是当JFrame的其他边界发生任何事情时,它才会听到.