Java小程序:在浏览器中没有抗锯齿字体(但在appletviewer中) [英] Java Applet: no antialiased font in browser (but in AppletViewer)

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

问题描述

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

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

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

那会是什么?

您也可以自己<一个试试吧href=\"http://www.matha.rwth-aachen.de/~ilias/jars/Termumformungen%20in%20der%20Technik/Termumformungen%20in%20der%20Technik.html\"相对=nofollow>这里。


从<一个href=\"http://stackoverflow.com/questions/179955/how-do-you-enable-anti-aliasing-in-arbitrary-java-apps/179971#179971\">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中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆