在Java程序的TItle栏中显示日文字符

时间:2009-06-01 18:34:00

标签: java internationalization jframe

除了Java中主窗口(JFrame)的标题栏外,我能够在任何地方显示日文字符。有没有办法改变这个标题栏的字体,以便它可以显示日文字符?感谢

我正在使用Windows XP。如果这很重要,我也会使用Java Substance外观。

4 个答案:

答案 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,以下步骤解决了浏览器标题栏的问题:

  1. 在Windows“开始”菜单中,打开“控制面板”。
  2. 单击“区域和语言选项”图标,然后单击“语言”选项卡。
  3. 在“补充语言支持”框中,选中“为东亚语言安装文件”框。
  4. 单击“应用”和“确定”。