设置JButton的宽度以容纳一定数量的字符

时间:2014-01-03 20:09:14

标签: java swing layout jbutton preferredsize

如何设置JButton以使其宽度足以容纳3位数,而无需在按钮上实际调用setText()以放入这些数字?

换句话说,如何设置按钮的列数?对于textField.setColumns(3)来说,相当于JTextField的调用是什么?

2 个答案:

答案 0 :(得分:3)

没有简单的方法可以达到这个目的,通常任何解决方案都会变得有点hackey并违反一些通常推荐的孤子......

你可以......

创建一个包含三个字符的第二个临时按钮,并使用它的首选大小作为显示的按钮的首选大小......

你可以......

从按钮获取字体指标,计算通常显示的文本的高度和宽度,添加插图和边距,并将此值设置为按钮的首选大小...

FontMetrics fm = button.getFontMetrics(button.getFont());
int width = fm.stringWidth("MMM");
int height = fm.getHeight();
Insets insets = button.getInsets();
Insets margins = button.getMargin();
width += insets.left + insets.right + margins.left + margins.right;
height += insets.top + insets.bottom + margins.top + margins.bottom;
button.setPreferrdSize(new Dimension(width, height));

就个人而言,如果我必须这样做,我会选择第一个选项:P

答案 1 :(得分:0)

您可以使用FontMetrics查找给定字体/大小的给定字符串的宽度。

伪代码:

FontMetrics metrics = new FontMetrics(new Font(/*font params here*/));
int width = metrics.stringWidth("My text");
int height = metrics.getHeight();

然后您可以相应地设置按钮的大小。