除了Java中主窗口(JFrame)的标题栏外,我可以在任何地方显示日文字符。有没有办法改变这个标题栏的字体,让它可以显示日文字符?谢谢
我正在使用 Windows XP。如果这很重要,我也在使用 Java Substance 的外观和感觉。
除了Java中主窗口(JFrame)的标题栏外,我可以在任何地方显示日文字符。有没有办法改变这个标题栏的字体,让它可以显示日文字符?谢谢
我正在使用 Windows XP。如果这很重要,我也在使用 Java Substance 的外观和感觉。
窗口的标题栏由系统窗口管理器而不是 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);
}
});
}
}
JFrame.setDefaultLookAndFeelDecorated(true);
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.put( "InternalFrame.titleFont", Resources.jaDefault.deriveFont(16.0f) );
Try it ;)
我不熟悉 Java Substance,但我在开发 web 应用程序时遇到过这种情况。基本上日文、中文和韩文字符会显示在页面的内容中,但不会显示在浏览器标题栏中。
这是因为窗口系统控制这个标题栏,而不是浏览器。根据 kdgregory 的评论,听起来这与您的情况相似。
为了让窗口系统理解字符并且不显示不受支持的“框”,您必须确保安装了正确的字符集。对于 Windows XP,以下步骤解决了浏览器标题栏的问题:
为了覆盖 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 设置。