Disons que j'ai un JButton, et je veux qu'il soit assez grand pour contenir une chaîne de 8 caractères "M", quelle que soit la chaîne assignée et la taille de la police, sans utiliser elipsis.S'assurer qu'un JButton peut contenir une chaîne d'une longueur donnée
Le JButton doit avoir exactement cette taille, ni plus, ni moins. Gestionnaire de mise en page en cours d'utilisation est GridBagLayout.
J'ai essayé d'écraser la méthode getPreferredSize() et d'effectuer un calcul en utilisant la chaîne et la police actuelle du système. Le calcul me rend une certaine valeur sensible, cependant, je n'ai aucune idée de comment définir la taille préférée de telle sorte que les frontières sont également considérées.
J'ai essayé d'obtenir les encarts du composant, mais ils sont tous des 0.
C'est le code de ma méthode:
public void getPreferredSize() {
Dimension d = super.getPreferredSize();
// Geometry width indicates how many characters must fit
char[] pad = new char[propGeometryWidth];
Arrays.fill(pad, 'M');
String tmpTemplateString = new String(pad);
FontMetrics tmpMetrics = getFontMetrics(getFont());
Rectangle2D tmpR2D = tmpMetrics.getStringBounds(tmpTemplateString, getGraphics());
int tmpWidth = (int)tmpR2D.getWidth();
int tmpHeight = (int)(tmpR2D.getHeight() * propGeometryHeight + tmpR2D.getHeight());
// We need to take into consideration borders and padding!
Insets insets = getInsets();
Dimension tmpSize = new Dimension(tmpWidth + insets.left + insets.right, tmpHeight + insets.top + insets.bottom);
return tmpSize;
}
J'ai le sentiment que cela pourrait être lié au fait que mon élément ne se réalise pas encore, mais je suis complètement incertain comment je pourrais résoudre ce problème . Est-ce que j'aborde ce problème du mauvais point de vue?