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(..)

您还可以为抗锯齿文本抗锯齿等对象设置RenderingHints,以通过以下方式提高 Swing 绘画质量:Graphics2D

  @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 回答