如何设置JButton
以使其宽度足以容纳3位数,而无需在按钮上实际调用setText()
以放入这些数字?
换句话说,如何设置按钮的列数?对于textField.setColumns(3)
来说,相当于JTextField
的调用是什么?
答案 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();
然后您可以相应地设置按钮的大小。