Necesita usar setPreferredSize()
en el componente. Luego, para cambiar el tamaño, llame al setBounds()
.
Probablemente subclase el botón y anule el método setText(String text)
para incluir el código de cambio de tamaño.
@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()));
}
Para las pruebas, lo hice en el constructor de mi nuevo JButton
subclase:
public ResizeToTextButton(String txt){
super(txt);
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setText(JOptionPane.showInputDialog("Text"));
}
});
}
Por lo tanto, cada vez que se hace clic en el botón que podría cambiar el texto y ver si se cambia el tamaño correctamente.
He actualizado mi respuesta, creo que hace lo que quiere. – jjnguy