0

paintComponent() メソッド内から JPanel の幅を計算しています。計算は機能しますが、JPanel には適切なサイズがありません。ウィンドウのサイズを変更すると、すべてが想定どおりになり、JPanel は適切なサイズになります。repaint() メソッドを別の場所 (たとえば、JPanel のコンストラクターまたは埋め込まれている JFrame) に配置しようとしましたが、フレームを正しいサイズで表示する解決策が見つかりませんでした。

public void paintComponent(Graphics g) {
 super.paintComponent(g);
 g.setFont(new Font("SANS_SERIF",Font.PLAIN,14));
 FontMetrics metrics;
 ...  

 boxwidth = ... dependent on width and height of some Strings

 ...

 if (getPreferredSize().getWidth()<boxwidth+100){
 setPreferredSize(new Dimension(boxwidth+100,600));
 }

 ... 

}

paintComponent() メソッド内から優先サイズを設定できるかどうか、または別の方法でメトリックを取得して、paintComponent() の外でボックス幅を計算できるかどうかを知りたいです

ありがとう、マイケル。

4

1 に答える 1

1

優先サイズを設定した後、JFrame で pack() を呼び出すと、すべてのサブコンポーネントの優先サイズに合わせて JFrame のサイズが変更されます。

http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#pack()

于 2013-07-28T11:26:37.747 に答える