4

paintComponent(..)メソッド を使用してテキストを印刷したい。

@Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(Color.red);
    g.drawString("Hello world", 10, 10);
}

しかし、テキストはややジャギーです。この方法で[アンチエイリアス]を使用してテキスト描画を強制するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

9

次の方法でダブルバッファリングを設定できます。

class MyPanel extends JPanel {
    public MyPanel() {
        super(true);//set Double buffering for JPanel
    }
}

または単に を呼び出します JComponent#setDoubleBuffered(..)

アンチエイリアステキストRenderingHintアンチエイリアスなどのGraphics2Dオブジェクトにを設定して、Swing の描画品質を向上させることもできます。

  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g); 
    Graphics2D graphics2D = (Graphics2D) g;

    //Set  anti-alias!
    graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON); 

   // Set anti-alias for text
    graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
            RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

    graphics2D.setColor(Color.red);
    graphics2D.drawString("Hello world", 10, 10);
}
于 2012-11-05T17:13:21.343 に答える