我正在使用javax.swing
开发Java桌面应用程序。
我想让我的应用程序无边框,同时可以调整大小。
当我使用frame.setUndecorated(true);
方法删除边框时,我无法再使用鼠标点击和拖动来调整框架的大小。
如何隐藏框架的边框并让用户调整大小?
答案 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) );