0

末尾に配置されたFlowLayoutを持つJpanelにjbuttonがあります。このコードは実際にはubuntu環境で機能しますが、centos環境で実行すると、テキストがボタンに収まりません。

JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
myButton = new JButton("My Text");
buttonPanel.add(myButton);

次に、次の行を追加します。

JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
myButton = new JButton("My Text");
int width=myButton.getFontMetrics(exportButton.getFont()).stringWidth(myButton.getText());
int height=myButton.getFontMetrics(myButton.getFont()).getHeight()+10;
myButton.setPreferredSize(new Dimension(width+30, height));
buttonPanel.add(myButton);

この追加の行は役に立ちましたが、解決策は良くないようです。

4

2 に答える 2

3
  • FlowLayoutデフォルトPreferredSizeでは、から来た受け入れJComponents

  • JButtonデフォルトでは の re_calculate する必要はありません。適切な のみを受け入れてPreferredSize仕事をしましょうLayoutManagerFlowLayoutPreferredSize

  • 最も重要なのは、コンテナー ( 、...)のpack()前(コンストラクターの最後のコード行) を呼び出すことです。setVisible(true)JFrameJDialog

  • すべてJComponentが独自の適切な値を返すことがPreferredSizeでき、この値をオーバーライドまたは設定する理由はありません。これは、空の場合JPanel(プロ カスタム ペインティング) または異なる場合があります。JScrollPane

于 2012-11-27T12:07:32.160 に答える
0

これは、異なるシステム フォントが使用されているために発生する可能性が最も高いです。ネイティブのルック アンド フィールをカスタム ルック アンド フィールでオーバーライドすることができます。このリンクは役に立つかもしれません。

于 2012-11-27T12:05:39.067 に答える