【问题标题】:How to change the size of a JLabel and JTextfield? [duplicate]如何更改 JLabel 和 JTextfield 的大小? [复制]
【发布时间】:2018-08-01 15:59:24
【问题描述】:

我只是想改变我的JLabelJTextField 的实际大小。目前我将它们放在JPanelGridLayout 上。我只希望标签和文本字段在每一行中彼此相邻。

现在它们如此分散,因为我的JLabel 很大,尽管我希望它很小。我尝试过使用setPreferredSize()setSize(),但它们的大小没有改变。我只想将它们设置为 30。

有人可以提供一些关于我的困境的见解吗?

【问题讨论】:

  • edit您的问题包含minimal reproducible example(即在您的问题中包含您的格式正确的代码)。您问题的当前状态将导致在 cmets 部分提出多个问题,或者您的问题将作为重复项关闭。

标签: java swing jlabel jtextfield layout-manager


【解决方案1】:

GridLayout 中的所有组件都分配了相同的大小(与最宽的一样宽,与最高的一样高)。这可以通过使用替代布局(例如GridBagLayout)来解决。

我只希望标签和文本字段在每一行中彼此相邻。

但我们可以在这里“作弊”,因为只有JLabel 的文本(和图标)是可见的。 IE。它没有可见的边框。为此,请确保标签的文本与最靠近它需要相邻的组件的一侧对齐。

但我可能会选择GridBagLayout 方法。它只会为该列中最宽的标签分配所需的空间。

【讨论】:

    【解决方案2】:

    要更改大小JFrame,您可以这样写

    myJFrame.setSize(30,30)
    

    要更改JTextField 中的字体大小,您可以这样写:

    myJLabel.setFont(new Font("calibri", Font.BOLD, 30))
    

    【讨论】:

    • OP 在问题中指出setSize(...) 没有任何改变。更改JTextField 的字体可能会更改它的高度,但不会更改为可靠的精确数量,尤其是从一个操作系统到另一个操作系统。 OP 应该使用考虑首选尺寸的布局管理器,例如GridBagLayout
    • 是的,GridBagLayout 类帮助他以水平和垂直方式排列组件。但它不能对 JLabel 文本中的字体大小做任何事情
    • 对,但是 OP 没有指定 JLabel 的字体大小是否很大,或者 JLabel 本身是否很大。无论哪种方式,使用尊重setPreferredSize(...) 的布局管理器将修复后者并照亮前者。
    • jlabel 和 jtexfield 中的字体大小目前分别设置为 30 和 20。
    • myJLabel.setFont(new Font("calibri", Font.BOLD, 30)) 对于正在安装的特定字体 (Calibri) 而言,不那么脆弱的是 label.setFont(label.getFont().deriveFont(30f).deriveFont(Font.BOLD))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 2015-02-08
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多