Вам нужно использовать 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"));
}
});
}
Поэтому, всякий раз, когда я нажимал на кнопку, я мог изменить текст и посмотреть, правильно ли он изменился.