Why the same font looks different in Java app run from Netbeans and run from Jar?

530 views Asked by At

In my Java Swing app I have some JTextAreas, I realize the text looks different when it's run from Netbeans and when the app is run from a Jar file, why ? How to make them look the same ?

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);

In the following image, the upper part is from the app run with Netbeans, the lower part is how it looks when run from a Jar file :

enter image description here

1

There are 1 answers

0
trashgod On BEST ANSWER

This is the expected behavior: as discussed in the 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.

In addition, for the reasons cited here, don't use setPreferredSize(). If you choose to override getPreferredSize(), be certain not to fall into this trap.