【问题标题】:Change JTextField height on Swing在 Swing 上更改 JTextField 高度
【发布时间】:2020-01-16 20:22:34
【问题描述】:

我正在尝试修复“amountField”文本字段的高度,但我不能。

我希望 amountField 的高度与上面的 JComboBox 高度相同,这样看起来更好。

现在,与其他设计相比,JTextField 看起来非常高。

我已经尝试了我在这个论坛上阅读的所有内容,但似乎没有任何效果。

我不知道它是否相关,但是整个 JPanel (WithdrawalScreen) 在另一个带有 BorderLayout 的 JPanel 内。这个面板是它的中心部分

谢谢

PictureHere

public class WithdrawalScreen extends JPanel {

    Public JPanel init() {

        this.setLayout(new GridLayout(0,1));

        account = new JLabel("account");
        accountSelect = new JComboBox(labels);
        amount = new JLabel("amount");
        amountField = new JTextField("");
        submit = new JButton("SUBMIT");

        this.add(account);
        this.add(accountSelect);
        this.add(amount);
        this.add(amountField);
        this.add(submit);


        return this;
    }

} 


【问题讨论】:

  • 传递给 JTextField 构造函数的“20”是什么意思?
  • @Gus 我现在删除了它,所以你不会感到困惑。那是我为了修改高度而尝试过的,但没有奏效。谢谢。
  • 尝试创建 1 行 5 列的 GridLayout new GridLayout(1,5)
  • 为什么让两个具有不同大小边框的组件具有相同的高度是有意义的?

标签: java swing jtextfield layout-manager


【解决方案1】:

尝试创建 5 行 1 列的网格布局。我认为高度搞砸了,因为您没有正确设置构造函数参数。

 new GridLayout(5,1);

【讨论】:

  • 我通过这样做获得了 5 列...这是我不想要的。我需要与图片类似的设计,但文本字段不应该那么高。谢谢。
  • 哦,对不起,是不是反过来了?
【解决方案2】:

网格布局将拉伸组件并为其所有组件提供相同的大小。为了保持每个组件的“默认”大小,您可以在其构造函数中使用BoxLayoutBoxLayout.Y_AXIS 参数。另一种方法是将虚拟嵌套 JPanel 与另一种布局一起使用。比方说 FlowLayout。

JTextField textField = new JTextField(10);
JPanel nestedPanel = new JPanel(new FlowLayout());
nestedPanel.add(textField);
gridLayoutPanel.add(nestedPanel);

JTextField 不会被拉伸。 nestedPanel 将。自己做一些实验,你会找到适合你需要的方法。

对您有帮助的链接:A visoual guide to Layout Managers.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2013-01-21
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多