我正在使用平台的外观,而在Linux上我的JTextArea文本框非常易读。
但是在Windows上,它使用的是“Monospaced 9”的字体,文本非常小。
为什么会这样?有什么最好的解决方法?
为什么默认的Windows外观在JTextArea中使用了如此小的字体?
我正在使用平台的外观,而在Linux上我的JTextArea文本框非常易读。
但是在Windows上,它使用的是“Monospaced 9”的字体,文本非常小。
为什么会这样?有什么最好的解决方法?
为什么默认的Windows外观在JTextArea中使用了如此小的字体?
不要创建新的字体,最好是派生现有的字体,因为这样可以保存由平台外观设置的字体,并且它还可以避免Unicode字符的问题:
textArea.setFont(textArea.getFont().deriveFont(12f)); // will only change size to 12pt
这里有一个解决方案,可以同时更改所有的JTextArea而不是每次添加新的文本区域时使用setFont():
UIManager.getDefaults().put("TextArea.font", UIManager.getFont("TextField.font"));
在应用程序启动后,设置外观后调用此方法。
大多数外观都使用相同的字体来呈现JTextArea和JTextField,但Windows却不同。
您可以使用JTextArea1.setFont(Font(String name, int style, int size))
方法为JTextArea组件指定特定类型的字体。例如:
jTextArea1.setFont(new Font("Arial Black", Font.BOLD, 8));
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class NewJFrame extends javax.swing.JFrame {
private JTextArea jTextArea1;
private JTextArea jTextArea2;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
NewJFrame inst = new NewJFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public NewJFrame() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
jTextArea1 = new JTextArea();
getContentPane().add(jTextArea1, BorderLayout.NORTH);
jTextArea1.setText("This is a fox running slow");
jTextArea1.setFont(new Font("Arial Black", Font.BOLD, 8));
jTextArea1.setPreferredSize(new java.awt.Dimension(164, 114));
}
{
jTextArea2 = new JTextArea();
getContentPane().add(jTextArea2, BorderLayout.SOUTH);
jTextArea2.setText("This is a fox running slow");
jTextArea2.setFont(new Font("Book Antiqua", Font.ITALIC, 12));
jTextArea2.setPreferredSize(new java.awt.Dimension(384, 129));
}
pack();
setSize(400, 300);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}
}
textArea = new JTextArea();
textArea.setFont(UIManager.getFont("TextField.font"));
只需执行以下操作:
textArea.setFont(new Font("Arial", Font.PLAIN, 16));
这将更改文本区域中所有文本的字体大小。