Ich möchte eine bestimmte Schriftart für alle Komponenten in einem JPanel
festlegen, aber ich bevorzuge, dass die Frage noch allgemeiner und nicht auf JPanel beschränkt ist. Wie kann ich die Schriftart auf eine Liste von Komponenten in einem Container (JFrame oder JPanel) setzen?Legen Sie die gleiche Schriftart für alle Komponente Java
Antwort
Legen Sie die Schriftartenwerte in UIManager
für die Komponenten fest, die Sie ändern möchten. Zum Beispiel können Sie die Schriftart für Etiketten, indem Sie verwendet gesetzt:
Font labelFont = ... ;
UIManager.put("Label.font", labelFont);
Beachten Sie, dass unterschiedliches Aussehen und fühlt sich (L & F) verschiedene Eigenschaften für die UIManager
Klasse haben kann, so dass, wenn Sie wechseln von einem L & F zu einem anderen können Sie Probleme haben.
- Sie UIManager
dies tun können ....
ZB:
public class FrameTest {
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
}
public static void main(String[] args) throws InterruptedException {
setUIFont(new FontUIResource(new Font("Arial", 0, 20)));
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
JPanel p = new JPanel();
p.add(new JLabel("hello"));
p.setBorder(BorderFactory.createTitledBorder("Test Title"));
f.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
Wenn ich UIManager benutze, ändere ich die Schriftart zur Komponente während der Anwendung, aber ich möchte es nur in einem bestimmten 'JFrame' oder' JPanel' ändern. Danke – Luca
Hier ist eine einfache Methode, die Sie Font auf den gesamten Komponenten Baum angeben können, unter jeder Container (oder nur eine einfache Komponente, ist egal):
public static void changeFont (Component component, Font font)
{
component.setFont (font);
if (component instanceof Container)
{
for (Component child : ((Container) component).getComponents())
{
changeFont (child, font);
}
}
}
Einfach passieren y unser Panel und spezifische Schriftart in diese Methode und Sie werden alle Kinder auch umgestaltet bekommen.
Ehrfürchtig, sein Arbeiten groß, ich habe Ihren Code-Bit wie folgt geändert, und es hilft mir, ich poste diesen Code in der Antwort –
Inspiriert von Mikle Grains Antwort Ich benutzte seinen Code die Schrift jeder Komponente in Prozent zu erhöhen, indem die alte Schrift
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(),f.getStyle(),f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
- 1. Verschiedene Routen für die gleiche Komponente
- 2. Legen Sie die Mindesthöhe für jede Komponente in JScrollPane fest
- 3. Legen Sie die Verzögerung der Tooltip für eine bestimmte Komponente in Java Swing
- 4. So legen Sie eine benutzerdefinierte Schriftart für die gesamte iOS-App ohne Angabe der Größe
- 5. Legen Sie alle Berechtigungen für Android-App
- 6. Legen Sie eine Schriftart speziell für alle Zahlen auf der Seite
- 7. Benutzerdefinierte Schriftart für alle TextViews
- 8. Mehrere Dienste exportieren die gleiche COM-Komponente
- 9. Stellen Sie die gleiche Höhe für alle Bilder ein
- 10. UIPickerView Mit verschiedenen Zeilenhöhen für die gleiche Komponente swift
- 11. Gleiche Komponente, verschiedene Stile
- 12. Legen Sie den Ausgabentext einer Schaltfläche auf eine bestimmte Schriftart
- 13. Drucken Sie alle Zeichen für eine Schriftart in MS Word
- 14. Legen Sie die Platzhalterzeichenfolge für NSTextView fest
- 15. So legen Sie die Schriftgröße für Text von Dialogfeldern fest
- 16. Legen Sie TextWrapping für alle Zellen mit Vorlage
- 17. Machen Sie alle Text mit Schriftart Helvetica haben die Schriftart Arial in jQuery
- 18. Legen Sie die Abstandstasten
- 19. Legen Sie alle Divs nicht Fokus zulassen
- 20. So legen Sie die Auflösung für Babel-Loader-Presets fest
- 21. die gleiche Geschwindigkeit wie Java von Java
- 22. Python dict, Liste hat die gleiche Instanz für alle Klassen
- 23. Wie alle Plattform-Compiler die gleiche Zeichenfolge für NaN ausgeben?
- 24. So legen Sie das Layout für die benutzerdefinierte Navigationsleiste fest
- 25. Machen Sie alle div.Hindernisse haben die gleiche Funktion
- 26. Legen Sie mehrere Word-Dokumentfenster in das gleiche übergeordnete Fenster
- 27. Legen Sie eine Java-Charset explizit dynamisch
- 28. Funktionen score liefert die gleiche Punktzahl für alle Dokumente
- 29. Machen Sie alle elemants eines Zeichenvektor die gleiche Länge
- 30. Legen Sie die Tabellenzellenbreite in iText Java pdf
bekommen Wenn ich UIManager verwende ich die Schrift auf die Komponente in der gesamten Anwendung ändern, aber ich Ich möchte es nur in einem bestimmten 'JFrame' oder' JPanel' ändern. Danke – Luca