首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JDK 7防止Swing组件中文本的混叠

使用JDK 7防止Swing组件中文本的混叠
EN

Stack Overflow用户
提问于 2014-01-22 17:07:41
回答 1查看 1.5K关注 0票数 0

请告诉我如何启用Swing组件中的文本反别名(使用JDK 7),而不是重写方法paintComponent()父类。若要阅读有关此主题的内容,请参阅此方法。

代码语言:javascript
复制
putClientProperty(
     com.sun.java.swing.SwingUtilities2.aa_text_property_key, Boolean.TRUE);

需要一个包com.sun.java.swing.SwingUtilities2,这在JDK早期的第5版中是没有的。不想在项目中包括过时的方法和库,请告诉我现在使用了哪些方法来平滑组件的文本(类似的putClientProperty())。

请不要写关于使用方法的文章

代码语言:javascript
复制
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
     RenderingHints.VALUE_ANTIALIAS_On);
//or 

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

因为即使重写了paintComponent()父类,它们也不能工作,下面的示例如下所示:

代码语言:javascript
复制
 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();
    }
 };

这不是工作!拜托救救我。

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 17:11:55

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

代码语言:javascript
复制
  System.setProperty("awt.useSystemAAFontSettings","on");
  System.setProperty("swing.aatext", "true");

顺便说一句,如果您重写paint(Graphics g) (然后将组件、边框和子绘制)在根容器中而不是paintComponent(Graphics g)中,则重写应该有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21289381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档