【问题标题】:Why the same font looks different in Java app run from Netbeans and run from Jar?为什么相同的字体在从 Netbeans 运行和从 Jar 运行的 Java 应用程序中看起来不同?
【发布时间】:2015-09-06 15:50:14
【问题描述】:

在我的 Java Swing 应用程序中,我有一些 JTextAreas,我意识到当它从 Netbeans 运行和从 Jar 文件运行应用程序时,文本看起来不同,为什么?如何让它们看起来一样?

JTextArea Client_Side_TextArea=new JTextArea(),Network_TextArea=new JTextArea();

setLayout(new BorderLayout());

Client_Side_TextArea.setFont(new Font("Monospaced",0,15));
Client_Side_TextArea.setForeground(new Color(0,28,218));
Client_Side_TextArea.setPreferredSize(new Dimension(290,300));
Client_Side_TextArea.append("           Client Side\n================================\n");
add("West",Client_Side_TextArea);

Network_TextArea.setFont(new Font("Monospaced",0,15));
Network_TextArea.setBackground(new Color(226,226,226));
Network_TextArea.setForeground(new Color(0,28,218));
Network_TextArea.setPreferredSize(new Dimension(270,300));
Network_TextArea.append("            Network Connection\n =========================================\n");
add("Center",Network_TextArea);

在下图中,上半部分来自使用 Netbeans 运行的应用程序,下半部分是从 Jar 文件运行时的外观:

【问题讨论】:

  • 你能试试 System.setProperty("sun.java2d.noddraw", "true");最后?
  • 我试过了,没用,我也试过了:System.setProperty("sun.java2d.d3d", "false");也没有用。
  • 你能设置窗口大小并关闭可调整大小吗?
  • 我设置:frame.setResizable(false);没用。为什么它有不同的字体?

标签: java swing fonts look-and-feel


【解决方案1】:

这是预期的行为:正如Font API 中所讨论的,每个受支持的平台可能会将不同的物理字体映射到特定的逻辑字体,例如@987654327 @。每个look & feel 可以进一步细化针对特定目的的字体选择。除非平台、版本和设置相同,否则字体可能会有所不同。可以在here 找到完整的示例和更多关于映射的内容。

此外,由于引用here 的原因,请勿使用setPreferredSize()。如果选择覆盖getPreferredSize(),一定不要落入这个trap

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2011-12-15
    • 2014-07-14
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2012-01-05
    • 2020-07-22
    • 2016-01-11
    相关资源
    最近更新 更多