【问题标题】:How to stop a JTextField from getting re-sized in GridLayout如何阻止 JTextField 在 GridLayout 中重新调整大小
【发布时间】:2012-06-08 17:34:25
【问题描述】:

我正在创建一个带有网格布局的 GUI。我已直接向其中添加了 JTextFields、JButtons 和所有内容。例如,像这样,

JButton b1 = new JButton("Hello"):
JButton b2 = new JButton("Bye");
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);

GridLayout grid = new GridLayout(2,2,2,2);

JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(b1);
panel.add(t1);
panel.add(b2);
panel.add(t2);

在这里,如果用户调整窗口大小,一切都会显得非常大。我知道防止这些获得这些的唯一另一种方法是将所有所有内容添加到具有 FlowLayout 的单独 JPanel 中。但这不切实际,因为如果有 20 个东西,就会有 20 个 JPanel。我尝试设置最大尺寸,最小尺寸和所有,他们没有改变任何。请帮忙。

【问题讨论】:

  • 您应该使用更复杂的带有约束的 GridBagLayout 或禁用调整大小。
  • GroupLayout 会更适合这个。 GridLayout 的自然做法是使所有内容都具有相同的大小。
  • 是的,GridBag 布局将是最好的选择,但就我个人而言,我不喜欢弄乱它。这就是为什么我总是选择其他布局。但是,如果我无法通过以下答案解决这个问题,那将是我唯一的选择。

标签: java swing layout layout-manager


【解决方案1】:
  1. 不可能使用普通的GridLayout,因为这是此布局管理器的基本功能

  2. 使用适当的布局管理器GridBagLayout 或今天的MigLayout

  3. 非常简单的方法是使用SpringLayout

【讨论】:

  • 我很感兴趣..但是 Oracle 说“但是,SpringLayout 是非常低级的,因此您真的应该只将它与 GUI 构建器一起使用,而不是尝试通过手。”你怎么看?
  • 有趣的描述,然后特别适用于 GridBagLayout,顺便说一句,如果您有任何疑问,请查看广告 MigLayout :-)
  • 将此标记为答案。感谢您的回答:)
【解决方案2】:

@mKorbel 和@Logan 在他们的回答中有所作为,但是如果您出于某种原因真的真的真的需要使用 GridLayout 并且您确实需要 JTextField 保持一定的大小,那么您可以通过将 JTextField 放在里面来做到这一点带有 BorderLayout 的 JPanel。

JTextField fixedWidthField = new JTextField();
JPanel fieldPanel = new JPanel(new BorderLayout());
fieldPanel.add(fixedWidthField, BorderLayout.WEST);

GridLayout grid = new GridLayout(2,2,2,2);

JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(b1);
panel.add(fieldPanel);
panel.add(b2);
panel.add(t2);

我们都建议您使用更高级的布局管理器。我个人喜欢 TableLayout,但您需要为此下载一个额外的 Jar 文件。

【讨论】:

  • +1 用于嵌套。 JPanel 默认值 FlowLayout 是一种替代方法。
【解决方案3】:

这是 gridLayout 的默认行为。我不确定阻止它是否容易。我会改用 gridBagLayout 。您可以将每个单元格的填充设置为无。一开始比较难,但我现在只用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多