è necessario utilizzare setPreferredSize()
sul componente. Quindi, per ridimensionarlo, chiamare setBounds()
.
avrei probabilmente sottoclasse il pulsante, e l'override del metodo setText(String text)
di includere il codice di ridimensionamento.
@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()));
}
Per il test, ho fatto questo nel costruttore della mia nuova JButton
sottoclasse:
public ResizeToTextButton(String txt){
super(txt);
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setText(JOptionPane.showInputDialog("Text"));
}
});
}
Così, ogni volta ho cliccato sul pulsante ho potuto cambiare il testo e vedere se ridimensionata propriamente.
Ho aggiornato la mia risposta, penso che faccia quello che vuoi. – jjnguy