请告诉我如何为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();
}
};
这不行!请帮忙。
答案 0 :(得分:3)
使用系统属性的全局设置:
System.setProperty("awt.useSystemAAFontSettings","on");
System.setProperty("swing.aatext", "true");
顺便说一句,如果您覆盖根容器中的paint(Graphics g)
(然后绘制组件,边框和子)而不是paintComponent(Graphics g)
,则覆盖应该有效。< / p>