Sie müssen setPreferredSize()
auf der Komponente verwenden. Um die Größe zu ändern, wählen Sie setBounds()
.
Ich würde wahrscheinlich die Schaltfläche Unterklasse, und überschreiben die setText(String text)
Methode, um die Größenänderung Code aufzunehmen.
@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()));
}
Zum Testen habe ich dies im Konstruktor meiner neuen JButton
Unterklasse:
public ResizeToTextButton(String txt){
super(txt);
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
setText(JOptionPane.showInputDialog("Text"));
}
});
}
Also, wenn ich auf die Schaltfläche geklickt Ich konnte den Text ändern und sehen, ob es die Größe neu bestimmt richtig.
Ich aktualisierte meine Antwort, ich denke, es tut was Sie wollen. – jjnguy