如何在JLabel中创建固定的“物理”长度字符串

时间:2013-10-10 13:09:04

标签: java true-type-fonts

我想用多个JLabel填充JPanel GridLayout。但是,我希望每个LabelText具有相同的宽度(以像素为单位)。标签都有两部分:

VarA:       123.4
VarB:       Green
DateMax  12/03/13

我可以使用Monospaced字体完成此操作,因为我只需要计算总字符数。

有没有办法对TrueType字体做同样的事情?

1 个答案:

答案 0 :(得分:0)

关于如何执行此操作的一个小示例:

public class AdjustedLabel extends JPanel {

    public AdjustedLabel(String leftText, String rightText) {
        JLabel leftLabel = new JLabel(leftText, SwingConstants.LEFT);
        JLabel rightLabel = new JLabel(rightText, SwingConstants.RIGHT);
        setLayout(new BorderLayout());
        add(leftLabel, BorderLayout.WEST);
        add(rightLabel, BorderLayout.EAST);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("label testing");
        JPanel panel = new JPanel(new GridLayout(3, 1));
        panel.add(new AdjustedLabel("VarA:", "123.4"));
        panel.add(new AdjustedLabel("VarB:", "Green"));
        panel.add(new AdjustedLabel("DateMax:", "12/03/13"));
        frame.setContentPane(panel);
        frame.setSize(200, 100);
        frame.setVisible(true);
    }
}

编辑:进行一些调整以使组件更具惯用性。