为什么相同的字体在 Netbeans 的 Java 应用程序 运行 和 Jar 的 运行 中看起来不同?
Why the same font looks different in Java app run from Netbeans and run from Jar?
在我的 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 文件 运行 时的样子:
这是预期的行为:如 Font
API, each supported platform may map a different physical font to a particulate logical font such as Font.MONOSPACED
. Each look & feel may further refine the choice of font for a particular purpose. Unless the platforms, versions and settings are identical, the fonts may vary. A complete example and more on the mapping may be found here 中所述。
此外,由于引用的原因here, don't use setPreferredSize()
. If you choose to override getPreferredSize()
, be certain not to fall into this trap。
在我的 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 文件 运行 时的样子:
这是预期的行为:如 Font
API, each supported platform may map a different physical font to a particulate logical font such as Font.MONOSPACED
. Each look & feel may further refine the choice of font for a particular purpose. Unless the platforms, versions and settings are identical, the fonts may vary. A complete example and more on the mapping may be found here 中所述。
此外,由于引用的原因here, don't use setPreferredSize()
. If you choose to override getPreferredSize()
, be certain not to fall into this trap。