除了Java中主窗口(JFrame)的标题栏外,我能够在任何地方显示日文字符。有没有办法改变这个标题栏的字体,以便它可以显示日文字符?感谢
我正在使用Windows XP。如果这很重要,我也会使用Java Substance外观。
答案 0 :(得分:3)
窗口的标题栏由系统窗口管理器管理,而不是由Swing管理。您没有说明您正在使用的操作系统/ GUI。
对于Windows XP,打开“显示”控制面板,选择“外观”选项卡,然后单击“高级”按钮;你可以在那里更改标题字体(虽然系统上安装的字体可能没有你需要的字形)。
这里有一些代码可以检查系统默认字体是否支持你想要的字形(我不知道字符是什么;它是来自片假名集的一个漂亮的字形):
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class GlyphCheck
{
public static void main(String[] argv) throws Exception {
final String title = "Testing: \u30CD";
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JLabel label = new JLabel(title);
label.setSize(200, 100);
frame.setContentPane(label);
frame.pack();
frame.setVisible(true);
}
});
}
}
答案 1 :(得分:1)
JFrame.setDefaultLookAndFeelDecorated(true);
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.put( "InternalFrame.titleFont", Resources.jaDefault.deriveFont(16.0f) );
Try it ;)
答案 2 :(得分:0)
为了覆盖Frame的字体,您需要告诉外观以照顾它的外观。这可能是也可能不是可取的,但你将受到系统的支配。有些外观和感觉有很好的窗户装饰,有些则不是这样。物质是可以的。告诉UIManager也使用什么字体。
// Do this before you display any JFrame.
UIManager.put( "Frame.font", new Font( "Japanese", 12, Font.PLAIN ) );
JFrame.setDefaultLookAndFeelDecorated( true );
JFrame frame = new JFrame( title );
这种方法(它应该运行 - 没有测试它对不起!)意味着你将能够分发你的程序而不告诉用户他们需要更改他们的Windows设置,按照另一个答案。
答案 3 :(得分:0)
我不熟悉Java Substance,但是在使用webapp时我遇到过这种情况。基本上日语,中文和韩语字符会显示在页面的内容中,但不会显示在浏览器标题栏中。
这是因为窗口系统控制着这个标题栏,而不是浏览器。根据kdgregory的评论,听起来这与你的情况类似。
要使窗口系统理解字符而不显示不支持的“框”,您必须确保安装了正确的字符集。对于Windows XP,以下步骤解决了浏览器标题栏的问题: