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);
フォントサイズを期待する よりもスタイル引数を期待するderiveFont
メソッドを混同しないでください。使用しているものは、style引数を使用しており、実際のフォントサイズには影響しません。代わりに
intro.setFont(intro.getFont().deriveFont(64f));
また、Paint
メソッドにコンポーネントを追加しないでください。現在のアプリケーションは、再描画が完了するまでJLabel
を表示しません。 Paint
(より正確にはSwingの場合はpaintComponent
)をオーバーライドすることは、カスタムペインティングを対象としていますが、コンポーネントの追加はそのようなものとしては認められません。アプリケーションには、コンポーネントが追加されるオーバーヘッドが毎回再描画されます。
例:
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);
}
});
}
}