Я использовал Ромен Гиппо . Чтобы установить шрифт по умолчанию для приложения при его первом построении.
public static void setUIFont(javax.swing.plaf.FontUIResource f) {
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put(key, f);
}
А потом называет это:
setUIFont(new javax.swing.plaf.FontUIResource("Sans", Font.PLAIN, 24));
Однако, когда новый текст записывается в приложение Swing: I.e
JTextArea textArea = new JTextArea();
onSomeEventHappening(){
textArea.setText("Hello world");
}
Hello world появляется в стандартном шрифте Swing, тогда как все остальные мои элементы остаются в шрифте, в котором я хочу, чтобы все оставалось. Есть ли способ убедиться, что весь новый текст, добавленный в приложение, не изменил свой шрифт .
![enter image description here](https://i.stack.imgur.com/VCuC8.png)
Выше приведен пример этого, слово "FOOTBALL"
было записано в его поле со списком и поэтому появляется с обычным шрифтом Swing, тогда как моя кнопка "Generate one link"
появляется в шрифте, который я установил.
Ниже приведен пример копирования и вставки. Если вы нажмете кнопку, несмотря на установку шрифта выше, метка все еще будет в оригинальном стиле Swings:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test extends JFrame {
private static final int WIDTH = 1000;
private static final int HEIGHT = 700;
private JTextArea textArea = new JTextArea();
public static void setUIFont(javax.swing.plaf.FontUIResource f) {
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put(key, f);
}
}
public test(){
initialize();
}
final ActionListener buttonClick = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setText("new Text");
}
};
public void initialize(){
new JFrame();
setBounds(100, 100, 450, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1,2));
setUIFont(new javax.swing.plaf.FontUIResource("Sans", Font.PLAIN, 24));
JButton button = new JButton("test");
button.addActionListener(buttonClick);
this.add(button);
this.add(textArea);
setVisible(true);
}
public static void main(String[] args){
test test1 = new test();
}
}