web-dev-qa-db-ja.com

JLabelフォントサイズを変更する

JLabelのフォントサイズを変更しようとしましたが、Fontを設定しようとしましたが、常に同じです!

以下にコードの一部を示します。

 @Override
 public void Paint(Graphics g) {
 super.Paint(g);
 Container cont=this.getContentPane();
 intro=new JLabel("משחק זיכרון");
 intro.setForeground(Color.YELLOW);
 intro.setFont(intro.getFont().deriveFont(64.0f));
 intro.setHorizontalAlignment( SwingConstants.CENTER );
 cont.add(intro);
     }

間違ったderiveFontメソッドを呼び出しています。

deriveFont(int)のパラメーターはスタイル(太字、斜体など)です。あなたが探しているメソッドはderiveFont(float)です。

あなたの場合、あなたがする必要がある唯一の変更はintro.setFont(intro.getFont().deriveFont(64.0f));です。

フォントサイズ64のラベルを表示する短いコード例を次に示します。

JFrame frame = new JFrame ("Test");
JLabel label = new JLabel ("Font Test");
label.setFont (label.getFont ().deriveFont (64.0f));
frame.getContentPane ().add (label);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.pack ();
frame.setVisible (true);
13
Laf

フォントサイズを期待する よりもスタイル引数を期待するderiveFontメソッドを混同しないでください。使用しているものは、style引数を使用しており、実際のフォントサイズには影響しません。代わりに

intro.setFont(intro.getFont().deriveFont(64f)); 

また、Paintメソッドにコンポーネントを追加しないでください。現在のアプリケーションは、再描画が完了するまでJLabelを表示しません。 Paint(より正確にはSwingの場合はpaintComponent)をオーバーライドすることは、カスタムペインティングを対象としていますが、コンポーネントの追加はそのようなものとしては認められません。アプリケーションには、コンポーネントが追加されるオーバーヘッドが毎回再描画されます。

例:

enter image description here

public class LabelDemo {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame("Label Test");
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                JLabel intro = new JLabel("משחק זיכרון");
                frame.add(intro);
                intro.setFont(intro.getFont().deriveFont(64f));
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
6
Reimeus