私はJButtonを持っていて、実際に割り当てられた文字列に関係なく8 "M"文字列に収まる大きさにしたいとしますそれと、フォントサイズ、elipsisを使用せずに。JButtonが指定された長さの文字列に収まることを保証する
JButtonは正確にこのサイズを持つ必要があります。使用中のレイアウトマネージャはGridBagLayoutです。
getPreferredSize()メソッドを上書きし、システムの文字列と現在のフォントを使用して計算を実行しようとしました。計算は私にいくつかの賢明な価値を戻しますが、私はどのように境界が考慮されるようなやり方で好ましいサイズを設定するか分かりません。
コンポーネントのインセットを取得しようとしましたが、すべて0です。
これは私のメソッドのコードです:
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;
}
私はこれが私のコンポーネントがまだ実現されていないという事実に関係するかもしれないという感覚を得るが、私は、私はこの問題を解決することができるか完全にわかりませんよ。間違った視点からこの問題に近づいていますか?