我想用许多 JLabels 填充 JPanel GridLayout。但是,我希望每个 LabelText 具有相同的像素宽度。标签都有两个部分:
VarA: 123.4
VarB: Green
DateMax 12/03/13
我可以使用等宽字体来完成此操作,因为我只需要计算总字符数。
有没有办法对 TrueType 字体做同样的事情?
关于如何做到这一点的一个小例子:
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);
}
}
编辑:一些调整,使组件更惯用。