String
可以像这样绘制:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
try {
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("Serif", Font.PLAIN, 12));//Japanese characters are visible
//g2d.setFont(new Font("Arial", Font.PLAIN, 12));//Japanese characters are not visible (squares only)
g2d.drawString("Berryz工房 『ROCKエロティック』(Berryz Kobo[Erotic ROCK]) (MV)", 10, 45);
} finally {
g2d.dispose();
}
}
问题在于,如果我使用
g2d.setFont(new Font("Arial", Font.PLAIN, 12));
,那么日文字符将无法显示,而只会显示方块符号:
g2d.setFont(new Font("Serif", Font.PLAIN, 12));
,一切都正常:
Font.canDisplayUpTo(String)
会有所帮助,但如何实现呢.. :) 又是一个难题,但至少是有可能的。Arial Unicode - 可能很好,但允许它随商业应用程序一起发布需要多少费用呢?.. - Ernestas Gruodisnew Font(Font.SANS_SERIF, Font.PLAIN, 12)
代替new Font("Arial", Font.PLAIN, 12)
,在Windows系统上应该会显示为Arial字体。 - Andrew Thompson