【发布时间】:2011-01-07 13:28:00
【问题描述】:
当用户单击 JFrame 的角以调整大小并拖动鼠标时,JFrame 在用户拖动时根据鼠标的当前位置重绘。你怎么能听到这些事件?
以下是我目前尝试过的:
public final class TestFrame extends JFrame {
public TestFrame() {
this.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// This is only called when the user releases the mouse button.
System.out.println("componentResized");
}
});
}
// These methods do not appear to be called at all when a JFrame
// is being resized.
@Override
public void setSize(int width, int height) {
System.out.println("setSize");
}
@Override
public void setBounds(Rectangle r) {
System.out.println("setBounds A");
}
@Override
public void setBounds(int x, int y, int width, int height) {
System.out.println("setBounds B");
}
}
当用户在鼠标周围拖动时,如何确定和限制用户如何调整窗口大小(基于窗口的当前纵横比)?
【问题讨论】:
-
@finnw 你能澄清你赏金的原因吗,因为我看到
Java_1.4和Java_1.5之间的区别,但我找不到Java_6、note的区别,但没有深入检查Nested和Inherits Method -
@mKorbel,我尝试了这两种方法(JPanel 上的 ComponentListener;覆盖验证。)代码在两个 Java 版本下编译和运行,但在 Java 1.6 中,布局会不断重新计算,但在 Java 1.5 中,仅当我松开鼠标。
-
@finnw 你是在调整 JComponent 还是 JFrame
-
@mKorbel,我正在用鼠标调整 JFrame 的大小,因为它有一个
BorderLayout,组件(带有BorderLayout.CENTER)应该跟随。 -
ComponentResizer by @camickr tips4java.wordpress.com/2009/09/13/resizing-components 来自 Java5 时代,
标签: java swing user-interface mouse