70 votes

Réglage de la Police par Défaut de Swing Programme

Je me demandais comment définir la police par défaut pour l'ensemble de mon programme Java swing. D'après mes recherches, il semble qu'il peut être fait avec UIManager, quelque chose à faire avec LookAndFeel, mais je ne trouve pas comment le faire, et l' UIManager semble assez compliqué.

66voto

Romain Hippeau Points 16175

essayez:

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 != null && value instanceof javax.swing.plaf.FontUIResource)
        UIManager.put (key, f);
      }
    } 

Appel par ...

setUIFont (new javax.swing.plaf.FontUIResource("Serif",Font.ITALIC,12));

41voto

Amir Raminfar Points 17939
UIManager.put("Button.font", /* font of your liking */);
UIManager.put("ToggleButton.font", /* font of your liking */);
UIManager.put("RadioButton.font", /* font of your liking */);
UIManager.put("CheckBox.font", /* font of your liking */);
UIManager.put("ColorChooser.font", /* font of your liking */);
UIManager.put("ComboBox.font", /* font of your liking */);
UIManager.put("Label.font", /* font of your liking */);
UIManager.put("List.font", /* font of your liking */);
UIManager.put("MenuBar.font", /* font of your liking */);
UIManager.put("MenuItem.font", /* font of your liking */);
UIManager.put("RadioButtonMenuItem.font", /* font of your liking */);
UIManager.put("CheckBoxMenuItem.font", /* font of your liking */);
UIManager.put("Menu.font", /* font of your liking */);
UIManager.put("PopupMenu.font", /* font of your liking */);
UIManager.put("OptionPane.font", /* font of your liking */);
UIManager.put("Panel.font", /* font of your liking */);
UIManager.put("ProgressBar.font", /* font of your liking */);
UIManager.put("ScrollPane.font", /* font of your liking */);
UIManager.put("Viewport.font", /* font of your liking */);
UIManager.put("TabbedPane.font", /* font of your liking */);
UIManager.put("Table.font", /* font of your liking */);
UIManager.put("TableHeader.font", /* font of your liking */);
UIManager.put("TextField.font", /* font of your liking */);
UIManager.put("PasswordField.font", /* font of your liking */);
UIManager.put("TextArea.font", /* font of your liking */);
UIManager.put("TextPane.font", /* font of your liking */);
UIManager.put("EditorPane.font", /* font of your liking */);
UIManager.put("TitledBorder.font", /* font of your liking */);
UIManager.put("ToolBar.font", /* font of your liking */);
UIManager.put("ToolTip.font", /* font of your liking */);
UIManager.put("Tree.font", /* font of your liking */);

Source: http://www.jguru.com/faq/view.jsp?EID=340519

20voto

Bombe Points 34185
java -Dswing.aatext=true -Dswing.plaf.metal.controlFont=Tahoma -Dswing.plaf.metal.userFont=Tahoma …

Cela permettra non seulement de définir Tahoma complets sur votre INTERFACE utilisateur, mais aussi activer l'anti-aliasing qui fait qu'une police beaucoup plus belle immédiatement.

12voto

sherif Points 71

Je pense que c'est mieux, en l'appelant pour la présente laf, au lieu de l'ensemble de l'UIManager mettre cette

UIManager.getLookAndFeelDefaults()
        .put("defaultFont", new Font("Arial", Font.BOLD, 14));

Quelque part dans le principal avant l'instanciation de votre JFrame objet. Il a fonctionné parfaitement pour moi. Rappelez-vous ceci est la police par défaut pour les composants qui n'ont pas précisé la police.

source: http://www.java.net/node/680725

5voto

Être conscient que la façon de définir la police par défaut dépend de la Regarder Et de Sentir que vous êtes en utilisant. La solution décrite par Romain Hippeau fonctionne très bien avec beaucoup de LAF, mais pas avec les Nimbus. Celui posté par sherif fonctionne très bien avec les Nimbus, mais pas avec d'autres (Métal, par exemple).

En combinant les deux pourrait fonctionner sur la plupart de LAF, mais aucune de ces solutions ne fonctionne avec GTK+ LAF.

Je pense (mais je ne suis pas sûr), il n'y a pas de solution multi-plateforme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X