使用鼠标

时间:2015-06-19 09:16:11

标签: java swing

我正在使用javax.swing开发Java桌面应用程序。 我想让我的应用程序无边框,同时可以调整大小。 当我使用frame.setUndecorated(true);方法删除边框时,我无法再使用鼠标点击和拖动来调整框架的大小。

如何隐藏框架的边框并让用户调整大小?

2 个答案:

答案 0 :(得分:2)

框架允许用户使用鼠标与JFrame进行交互。如果您移除框架,则无法使用它移动框架或调整框架大小。您可以自己重新实现此功能(不知道您为什么要这样做,但当然实验总是很有趣!)

首先,您必须以某种方式获取用户鼠标事件。通过创建自定义JComponent,可能称为ResizeGrip,并将其放置在框架的右下角,您可以直观地向用户显示他们仍然可以调整框架的大小。然后,您可以实施MouseListener以查看用户何时点击并拖动您的ResizeGrip

然后,您需要将这些事件检测转换为实际调整框架大小的指令,即通过someJFrame.setSize(newWidth, newHeight);。如果你想移动框架,你还需要做类似的事情。

答案 1 :(得分:2)

查看Resizing Component以获取允许您调整任何组件大小的通用类。

该类是MouseListener,它将自己安装在您指定的组件上。

将其添加到您的框架的基本代码是:

JFrame frame = new JFrame("SSCCE");
frame.setUndecorated(true);

ComponentResizer cr = new ComponentResizer();
cr.registerComponent(frame);

您可以通过指定“拖动插入”来控制可以拖动哪些边。所有边的默认值均为5,这意味着您可以调整任何大小。您可以使用以下方法限制仅水平调整框架的大小:

cr.setDragInsets( new Insets(0, 0, 0, 5) );