【问题标题】:Resize gui elements by dragging the corners通过拖动角来调整 gui 元素的大小
【发布时间】:2026-02-17 16:35:01
【问题描述】:

我有一个摇摆项目,注意到 JFrame 内的元素静态位于 JFrame 内,我无法根据需要调整元素的大小。

我在设计器窗口中的 gui 应用如下所示:

我想通过拖动按钮的角来调整按钮的大小(例如),但我不被允许?

如下图所示,不允许按像素拖动,只能按JFrame中的每个部分进行拖动:

如何禁用元素的静态放置/启用设计器窗口内的元素自拖动?

【问题讨论】:

  • “想通过拖动按钮的角来调整按钮的大小(例如),但我不被允许?” 的问题从开始 a) 您无法提前知道组件在其他人的机器上需要多大(使用不同的 Java 版本、屏幕尺寸/分辨率、PLAF 等) b) 它会导致无法调整大小图形用户界面..

标签: java swing user-interface layout


【解决方案1】:

您很可能需要禁用LayoutManager。在 Netbeans 上,将此设置为 null 可以让您完全控制子元素的位置和尺寸,所以我假设类似的东西应该在这里工作(尽管您似乎使用的是 Eclipse,如果是这种情况,请说明您正在使用什么插件)。

需要注意的是,通常你希望有一个布局管理器来处理你的组件的渲染方式。我建议你看看@987654321 @ 了解更多关于布局管理器的信息,然后再完全删除它们。

【讨论】:

  • 谢谢!我改变了“contentPane.setLayout();”的参数从“new BorderLayout(0, 0)”到“null”的方法调用,现在我可以动态调整大小了。
  • @Alex:如果这个答案对您有帮助,那么请标记它,它将激励其他人在未来帮助您:)。话虽如此,我曾经将布局设置为 null 并且曾经遇到各种奇怪的定位问题,只能通过不允许用户更改任何使用的尺寸来解决。正如我在回答中所说,我强烈建议您尝试看看是否有适合您需求的布局管理器。
  • LayoutManager 设置为 null 并不是 Netbeans 特有的,它是 Swing 的工作原理。
  • “现在我可以动态调整大小了。” 现在你的 GUI完全坏了。 :( @npinti 我注意到你的一些很好的答案,但答案不在其中。
  • @AndrewThompson:我确实强调(我认为,在我的回答和评论中),将布局管理器排除在等式之外最终会产生问题。如果还有什么需要指出的,一定要告诉我:)
【解决方案2】:

在 GUI 中设置组件的大小和位置应在运行时留给 JRE,使用:

  • 组件的首选大小(包含当前内容,在当前 PLAF 中)。
  • 为组件设置的边框/填充/插图。
  • 使用的布局。
  • 布局构造函数中定义的组件间距。
  • 在向布局中添加组件时使用的布局约束(对于 BorderLayout 和备受诟病的 GridBagLayout 以及许多第 3 方布局尤其重要)。

通常,使用nested layout 创建复杂的效果。

【讨论】:

  • 不会对null-layout 答案投反对票(我认为警告就足够了),但会尝试通过对其他答案进行投赞成票来将答案放在页面底部,强调你应该使用布局管理器
  • @Robin 感谢您没有转向组件布局的“黑暗面”。 ;)
  • 切换到组件布局是我的待办事项,就在我将热指甲穿过我的眼睑之后。
最近更新 更多