Java 使用鼠标调整没有边框的JFrame的大小

Java 使用鼠标调整没有边框的JFrame的大小,java,swing,Java,Swing,我正在使用javax.swing开发一个Java桌面应用程序。 我希望使我的应用程序边界更小,同时可以调整大小。 当我使用frame.setUndercorated(true)移除边框时方法我无法再使用鼠标单击和拖动调整帧大小 如何隐藏框架的边框并仍然允许用户调整其大小?框架允许用户使用鼠标与JFrame进行交互。如果删除框架,则无法使用它移动或调整框架大小。你可以自己重新实现这个功能(不知道为什么你想这么做,但是实验总是很有趣!) 首先,您必须以某种方式获取用户鼠标事件。通过创建一个自定义的J

我正在使用
javax.swing
开发一个Java桌面应用程序。 我希望使我的应用程序边界更小,同时可以调整大小。 当我使用
frame.setUndercorated(true)移除边框时方法我无法再使用鼠标单击和拖动调整帧大小


如何隐藏框架的边框并仍然允许用户调整其大小?

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

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


然后,您需要将这些事件检测转换为指令,以便实际地调整帧的大小,即通过
someJFrame.setSize(newWidth,newHeight)。如果要移动框架,还需要执行类似操作。

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

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

然后,您需要将这些事件检测转换为指令,以便实际地调整帧的大小,即通过
someJFrame.setSize(newWidth,newHeight)。如果要移动框架,还需要执行类似操作。

查看一个通用类,该类允许您调整任何组件的大小

该类是一个
mouseStener
,它将自己安装在指定的组件上

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

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

ComponentResizer cr = new ComponentResizer();
cr.registerComponent(frame);
通过指定“拖动插入”,可以控制可以拖动哪些边。所有边的默认值为5,这意味着您可以调整任何大小。您可以使用以下命令限制仅水平调整框架的大小:

cr.setDragInsets( new Insets(0, 0, 0, 5) );
查看一个通用类,该类允许您调整任何组件的大小

该类是一个
mouseStener
,它将自己安装在指定的组件上

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

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

ComponentResizer cr = new ComponentResizer();
cr.registerComponent(frame);
通过指定“拖动插入”,可以控制可以拖动哪些边。所有边的默认值为5,这意味着您可以调整任何大小。您可以使用以下命令限制仅水平调整框架的大小:

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

添加您正在使用的(最少)代码。说明你想要的行为和观察到的行为。假设用户通常不会意识到没有边框的框架可以调整大小,我认为这在很大程度上是没有意义的。你把精力集中在制作一个可用的GUI上怎么样?顺便说一句,用小写字母输入的单词很难阅读,就像试图听别人喃喃自语一样。请在句子开头使用大写字母,用于单词I,以及诸如
ArrayList
或Oracle之类的专有名称。嗨,泽山,欢迎来到StackOverflow,我们有非常高的问答标准,以确保其内容的质量保持高水平,作为一个新成员,这可能有点令人畏惧,但请知道,任何类似上述的评论都是建议,而不是批评,而且所有用户在过去都没有达到本网站的高标准。“别担心,下次做得更好”的态度是在这里做好的关键!添加您正在使用的(最少)代码。说明你想要的行为和观察到的行为。假设用户通常不会意识到没有边框的框架可以调整大小,我认为这在很大程度上是没有意义的。你把精力集中在制作一个可用的GUI上怎么样?顺便说一句,用小写字母输入的单词很难阅读,就像试图听别人喃喃自语一样。请在句子开头使用大写字母,用于单词I,以及诸如
ArrayList
或Oracle之类的专有名称。嗨,泽山,欢迎来到StackOverflow,我们有非常高的问答标准,以确保其内容的质量保持高水平,作为一个新成员,这可能有点令人畏惧,但请知道,任何类似上述的评论都是建议,而不是批评,而且所有用户在过去都没有达到本网站的高标准。“别担心,下次做得更好”的态度是在这里做好的关键!我可以删除标题栏或使边框变薄吗?你在说什么,你的问题状态你已经删除了边框和标题栏???我可以删除标题栏或使边框变薄吗?你在说什么,你的问题状态你已经删除了边框和标题栏???