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 :
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 asFont.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 overridegetPreferredSize()
, be certain not to fall into this trap.