【问题标题】:How to auto resize java swing elements?如何自动调整java swing元素的大小?
【发布时间】:2012-07-21 01:51:51
【问题描述】:

我正在尝试自动调整应用程序左侧的大小。我在左边有一个 JTextField 和一个 JTree,在右边有 3 个 JButton。但我只是不知道如何让左侧自动调整大小。

我使用 Netbeans GUI Creator(或其他名称)完成了此操作,但没有 Netbeans 我不知道如何操作。 (我通常不使用 Netbeans 进行编程,这只是一个例外,看看是否可以使用 Swing 进行编程。

这是 Netbeans 创建的代码:http://pastebin.com/ERwY4rBC 不是代码完全无法使用,而是我想手动尝试一下。

GroupLayout 看起来不错,但 Oracle 网站说它主要用于 GUI 工具。那么,使用 GroupLayout 将不是“类似 Java”,或者我必须如何理解它?或者有没有更好的方法在没有 GroupLayout 的情况下实现这一点?

谢谢!

【问题讨论】:

  • 更好的方法是手动编写代码并使用对编码器更友好的布局管理器,通常在嵌套的 JPanel 中。例如,请查看this answer to a similar question
  • 自动调整大小到底是什么意思?调整窗口大小时调整大小?
  • 正如“气垫船”所说,手动编码使用布局管理器可能是最佳选择。我发现 BorderLayout 非常灵活——您可以将一个面板的“左侧”内容放在 BorderLayout 的中心,将“右侧”放在东部。如需更多控制,请查看 MigLayout。远离 GridLayout - 它对于大多数用途来说太复杂了。
  • 一个更好的链接示例:EastProgressList。 @GreyBearded:我认为您的意思是“GridBagLayout”,但即使编写代码也比 GroupLayout 更容易。
  • 一个使用GridBagLayout的例子。

标签: java swing layout


【解决方案1】:

所以,使用 GroupLayout 不是“像 Java”或者我必须如何理解它

GroupLayout 简单来说就是很难手工编码,而且主要是大量的代码。但这不是“不像 Java”,只是不是你想手工做的事情,而且后面的代码比较冗长,很难阅读。

使用'nested layouts' 可以轻松实现您尝试实现的目标(根据屏幕截图)。如果您的主面板使用BorderLayout,您将左侧可调整大小的面板放在BorderLayout.CENTER 中,另一个不可调整大小的面板放在BorderLayout.EAST 中,您将获得所需的调整大小行为。

然后您只需决定将哪个LayoutManager 用于这些单独的面板。我认为BoxLayoutFlowLayout 都可以。

【讨论】:

  • 这正是我想要的。谢谢! :) 但是有没有办法设置左侧的最小宽度?我尝试使用左侧的 JPanel 设置最小尺寸,使用“setMinimumSize(new Dimension(120, 0));”但它没有用。
  • 好的,修复它。 :) 我读到无法设置 CENTER 元素的大小,而是使用 setPreferredSize(dimension) 设置侧面元素的大小。
【解决方案2】:

帮自己一个忙,使用MigLayout 来满足您的所有布局需求。手动编写UI特别方便。

在他们的网站上有一个WebStart 应用程序,通过提供的代码示例演示不同的布局情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多