gpt4 book ai didi

java - 什么 LayoutManager 可以将 JLabel 或 JTextField 的高度与其字体大小相匹配?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:38 25 4
gpt4 key购买 nike

我有几个 JPanel,其中包含 JLabelJTextField,用于我的 Swing 应用程序中的用户输入。

我正在手动编辑 NetBeans GUI Builder 生成的代码,但仍想保持类似的布局。

我从使用 GridLayout 开始。我可以调整 hgap 以使我的 JLabelJTextField 大小合适,但我必须针对所有JPanels。

是否有一个标准的 LayoutManager 可以根据组件的字体大小计算文本组件的正确高度,并在文本组件之间和/或周围用空格填充包含的组件?

编辑:

根据要求,这是一个 SSCCE 来演示我正在尝试做的事情

网格布局SSCCE:

package gridlayoutsscce;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class GridLayoutSSCCE {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
JFrame f = new JFrame("Grid Layout SSCCE");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GridLayoutSSCCEPanel());
f.pack();
f.setVisible(true);
}
});
}
}

网格布局SSCCE面板:

package gridlayoutsscce;

import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

class GridLayoutSSCCEPanel extends JPanel {
public GridLayoutSSCCEPanel() {
this.setLayout(new GridLayout(2, 2));
this.add(new JLabel("Label 1:"));
this.add(new JTextField());

this.add(new JLabel("Label 2:"));
this.add(new JTextField());
}
}

当我第一次运行程序时,这看起来不错。但是,当我调整窗口大小时,文本字段会拉伸(stretch)开,因此每个字段都占了窗口高度的一半。我希望它们在窗口调整大小时保持与原来相同的高度。

最佳答案

GridBagLayout会做你想做的,虽然它非常灵活,但它也被认为是最复杂的之一。

我确定 MigLayout 会被提及,但我从未亲自使用过它,我还应该提及 JGoodies FormLayout , 但同样,我从未使用过它。

关于java - 什么 LayoutManager 可以将 JLabel 或 JTextField 的高度与其字体大小相匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com