本文介绍了Java小程序:在浏览器中没有抗锯齿字体(但在appletviewer中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在appletviewer中,我的小程序是这样的:

在浏览器中,我的小程序是这样的:

正如你所看到的,字体不抗锯齿。还背景颜色是不同的。和所有的文字板缺右侧。

那会是什么?

您也可以自己这里。


从here我试图用这个code:

  System.setProperty(上,awt.useSystemAAFontSettings);
System.setProperty(swing.aatext,真);

但只有在这个异常导致:

  java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission awt.useSystemAAFontSettings写)
    在java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    在java.security.AccessController.checkPermission(AccessController.java:546)
    在java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    在java.lang.System.setProperty(System.java:742)
    在applets.Termumformungen $ $在$ DER Technik_08_Ethanolloesungen.Applet.init(Applet.java:51)
    在sun.plugin2.applet.Plugin2Manager $ AppletExecutionRunnable.run(Plugin2Manager.java:1640)
    在java.lang.Thread.run(Thread.java:680)
异常:java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission awt.useSystemAAFontSettings写)


解决方案

应该通过重写油漆方法,这样每个部件的工作要具有抗别名:

 静态无效activateAntiAlias​​ing(图形G){
    尝试{
        Graphics2D的G2D =(Graphics2D的)克;        //抗锯齿几何形状
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                              RenderingHints.VALUE_ANTIALIAS_ON);        //抗锯齿文本
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                              RenderingHints.VALUE_TEXT_ANTIALIAS_ON);        //去质量超速
        g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
                              RenderingHints.VALUE_RENDER_QUALITY);
    }
    赶上(抛出ClassCastException忽略){}
}@覆盖公共无效漆(最终图形G){
    activateAntiAlias​​ing(G);
    super.paint(G);
}

In the AppletViewer, my Applet looks like this:

In the browser, my Applet looks like this:

As you can see, the font is not antialiased. Also the background color is different. And all the text is cutted on the right side.

What could that be?

You can also try it yourself here.


From here I tried to use this code:

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

But that results only in this exception:

java.security.AccessControlException: access denied (java.util.PropertyPermission awt.useSystemAAFontSettings write)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.System.setProperty(System.java:742)
    at applets.Termumformungen$in$der$Technik_08_Ethanolloesungen.Applet.init(Applet.java:51)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1640)
    at java.lang.Thread.run(Thread.java:680)
Exception: java.security.AccessControlException: access denied (java.util.PropertyPermission awt.useSystemAAFontSettings write)
解决方案

It should work by overriding the paint method like this for each component where you want to have anti-aliasing:

static void activateAntiAliasing(Graphics g) {
    try {
        Graphics2D g2d = (Graphics2D)g;

        // for antialiasing geometric shapes
        g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING,
                              RenderingHints.VALUE_ANTIALIAS_ON );

        // for antialiasing text
        g2d.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING,
                              RenderingHints.VALUE_TEXT_ANTIALIAS_ON );

        // to go for quality over speed
        g2d.setRenderingHint( RenderingHints.KEY_RENDERING,
                              RenderingHints.VALUE_RENDER_QUALITY );
    }
    catch(ClassCastException ignored) {}
}

@Override public void paint(final Graphics g) {
    activateAntiAliasing(g);
    super.paint(g);
}

这篇关于Java小程序:在浏览器中没有抗锯齿字体(但在appletviewer中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 13:42
查看更多