setPreferredSize()
コンポーネントで使用する必要があります。次に、サイズを変更するには、 を呼び出しますsetBounds()
。
おそらくボタンをサブクラス化し、setText(String text)
メソッドをオーバーライドしてサイズ変更コードを含めます。
@Override
public void setText(String arg0) {
super.setText(arg0);
FontMetrics metrics = getFontMetrics(getFont());
int width = metrics.stringWidth( getText() );
int height = metrics.getHeight();
Dimension newDimension = new Dimension(width+40,height+10);
setPreferredSize(newDimension);
setBounds(new Rectangle(
getLocation(), getPreferredSize()));
}
テストのために、新しいJButton
サブクラスのコンストラクターでこれを行いました。
public ResizeToTextButton(String txt){
super(txt);
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setText(JOptionPane.showInputDialog("Text"));
}
});
}
そのため、ボタンをクリックするたびに、テキストを変更して、適切にサイズ変更されているかどうかを確認できました。