JTextPane にアンチエイリアス フォントをペイントさせるにはどうすればよいですか?
-
20-09-2019 - |
質問
Swingアプリではカスタムでテキストをレンダリングしています JComponent
, を使用して Graphics.drawString()
. 。これがサンプルです:
aa テキスト http://img525.imageshack.us/img525/4928/drawstringsample.jpg
同じアプリで、を使用してテキストをレンダリングしています。 JTextPane
. 。これがサンプルです:
代替テキスト http://img28.imageshack.us/img28/1134/jtextpanesample.jpg
下のサンプルが少し「汚れている」のがわかるでしょうか?うーん、上のサンプルのように見せる方法がわかりません。
ありがとう、アサフ:-)
アップデート:
System.setProperty("awt.useSystemAAFontSettings","false")
そして"lcd"
も機能していません。((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)
でpaint()
機能していませんputClientProperty(
sun.swing.SwingUtilities2
.AA_TEXT_PROPERTY_KEY, Boolean.TRUE)
与えるjava.lang.ClassCastException: java.lang.Boolean cannot be cast to sun.swing.SwingUtilities2$AATextInfo
解決 2
putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);
他のヒント
このはJLabelのでアンチエイリアスフォントになります。あなたはsuper.paintComponent(g)を呼び出すことを確認してください。 RenderingHints内を設定した後ます。
JLabel lblFont = new JLabel(){
@Override
public void paintComponent(Graphics g) {
Graphics2D graphics2d = (Graphics2D) g;
graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
super.paintComponent(g);
}
};
、そして、あなたがしたいと、の無効化のアンチエイリアシングます。
あなたの質問の最初のサンプルは、アンチエイリアシング無効になっており、第二のサンプルは、それが有効になっています。
http://mindprod.com/jgloss/antialiasing.html の次によると、コードは役立つはずます:
jtextArea.putClientProperty(com.sun.java.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, Boolean.TRUE);
com.sun.java.*
への参照は(日のJVMの異なるバージョンへの可能性と)アプリケーションが非日のJVMへの非ポータブルになることに注意してください。