使用JDK 7在Swing组件中对文本进行抗锯齿处理

时间:2014-01-22 17:07:42

标签: java swing

请告诉我如何为Swing组件中的文本启用抗锯齿(使用JDK 7),而不是重写方法paintComponent()父类。阅读有关此主题的内容,其中说明了使用此方法

putClientProperty(
     com.sun.java.swing.SwingUtilities2.aa_text_property_key, Boolean.TRUE);

需要一个包com.sun.java.swing.SwingUtilities2,它在JDK旧版本的第5版中不存在。不想在项目中包含过时的方法和库,请您告诉我现在使用哪些方法来平滑组件的文本(类似于putClientProperty())。

请不要写有关使用方法的信息

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
     RenderingHints.VALUE_ANTIALIAS_On);
//or 

g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIAsing,
     RenderingHints.VALUE_TEXT_ANTIALias_on);

因为如果你覆盖了paintComponent()父类,它们就不会工作,如下例所示:

 JButton button = new JButton("Button X O") {

    @Override
    public void paintComponent(Graphics g){
         Graphics2D g2d = (Graphics2D) g;
         //g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
               //RenderingHints.VALUE_ANTIALIAS_On);
         g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, 
               RenderingHints.VALUE_TEXT_ANTIALIASING_ON);
         super.paintComponent(g2d);
         g2d.dispose();
    }
 };

这不行!请帮忙。

1 个答案:

答案 0 :(得分:3)

使用系统属性的全局设置:

  System.setProperty("awt.useSystemAAFontSettings","on");
  System.setProperty("swing.aatext", "true");

顺便说一句,如果您覆盖根容器中的paint(Graphics g)(然后绘制组件,边框和子)而不是paintComponent(Graphics g),则覆盖应该有效。< / p>