Swing JColorChooser Font ändern

Shadowqueen105

Neues Mitglied
Hallo liebe Community,

ich bin neu hier und möchte nach erfolgloser Onlinerecherche nun euch um Rat fragen. Mein Problem ist, dass ich gerne einen Standard-JColorChooser verwenden möchte, allerdings den Font meines restlichen Programms und eben auch des JColorChoosers anpassen möchte.

Leider habe ich es bisher nur geschafft, den Font des Vorschaufensters zu verändern. Die Überschriften der Farbauswahl-Tabs, die Überschrift des Vorschaufensters, die Button-Beschriftungen, die Titelzeile "Change Font Color" und die Farbsammlung mit Überschrift "Aktuell:" konnte ich allerdings noch nicht beeinflussen. ;(

Anbei findet ihr ein Minimalbeispiel zur Veranschaulichung. Irgendwie habe ich das Gefühl, ich bin noch gar nicht zu der Ebene der Komponenten, welche ich anpassen möchte, runtergedrungen...

Habt ihr eine Idee, wie ich die Fonts abändern kann??? Über Hilfe würde ich mich sehr freuen!

Viele Grüße
Shadowqueen105

Java:
//-------Die Hauptklasse---------
package helloworld;

public class HelloWorld {

	public static void main(String[] args) {
		ColoredFrame f = new ColoredFrame();
		f.setSize(300, 200);
		f.setVisible(true);
	}

}

//-------Die eigentliche Problemklasse---------
package helloworld;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.colorchooser.AbstractColorChooserPanel;

public class ColoredFrame extends JFrame implements ActionListener{
	
	private static final long serialVersionUID = 1L;
	private JColorChooser myChooser = new JColorChooser();
	private JLabel hi;
	private JButton bColor;
	
	public ColoredFrame() {
		super();
		init();
	}
	
	private void init() {
		this.setLayout(new BorderLayout());
		this.getContentPane().setBackground(Color.white);
		this.setFont(new Font("Arial", Font.PLAIN, 28));
		
		hi = new JLabel("HelloWorld!");
		hi.setPreferredSize(new Dimension(200,50));
		hi.setFont(new Font("Arial", Font.PLAIN, 28));
		this.add(hi, BorderLayout.NORTH);
		
		bColor = new JButton("Change Color");
		bColor.setPreferredSize(new Dimension(100,30));
		bColor.addActionListener(this);
		bColor.setActionCommand("colorChooser");
		bColor.setFont(new Font("Arial", Font.PLAIN, 28));
		this.add(bColor, BorderLayout.SOUTH);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getActionCommand().equals("colorChooser")) {
			
			JDialog dCC = JColorChooser.createDialog(
			          this, "Change Font Color", true, myChooser, new ActionListener() {
			        	  public void actionPerformed(ActionEvent e) {
			        		  Color newColor = myChooser.getColor();
			        		  hi.setForeground(newColor);
			        		  bColor.setForeground(newColor);
			        	  }
			          }, null);
			//try to set font of the whole JDialog --> doesn't work
			dCC.setFont(new Font("Arial", Font.PLAIN, 28));
			
			//this works
			myChooser.getPreviewPanel().setFont(new Font("Arial", Font.PLAIN, 28));
			
			for (AbstractColorChooserPanel p: myChooser.getChooserPanels()) { 
				/*try to set font of the each AbstractColorChooserPanel
				 * --> doesn't work*/
				p.setFont(new Font("Arial", Font.PLAIN, 28));
				/*try to set font of the each component on each AbstractColorChooserPanel
				 * --> doesn't work*/
				for (Component c: p.getComponents()) {
					c.setFont(new Font("Arial", Font.PLAIN, 28));
				}
			}
			dCC.setVisible(true);
		}
		
	}
}
 

lordofdonuts

Aktives Mitglied
Hallo Shadowqueen105,

falls der Font in der ganzen Applikation gleich sein soll, kannst du anstatt den Font für jeden Component einzeln zu setzen, einen UIManager verwenden.

Das ganze schaut dann so aus:

Java:
public class HelloWorld {
 
    private static void setUIFont(FontUIResource f) 
    {
        Enumeration<Object> 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) {
	    setUIFont(new FontUIResource(new Font("Arial", Font.PLAIN, 28)));
		
        ColoredFrame f = new ColoredFrame();
        f.setSize(300, 200);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Das hat den positiven Nebeneffekt, dass du den Font zentral verwalten kannst. Sprich änderst du ihn hier, ändert er sich überall. Falls du für bestimme Elemente eine Ausnahme brauchst, wird ein direktes Setzen an der Komponente den UIManager overrulen. Damit das funktioniert, musst du die ganzen setFont-Aufrufe in ColoredFrame entfernen.

Beispiel:

UIManager: Arial, 10pt
JButton: Courier, 30pt

siehe Anhang
 

Anhänge

  • uimanager.png
    uimanager.png
    56,8 KB · Aufrufe: 38

Shadowqueen105

Neues Mitglied
Hallo lordofdonuts,

vielen, vielen Dank für die ausführliche Antwort! Den Font über den UIManager allgemein gültig zu setzen ist natürlich viel eleganter und sinnvoller als jede Komponente einzeln anzupassen - zumindest wenn man den Font von allen Komponenten ändern möchte. Aber genau das war mein Anliegen.

Mein eigentlicher Anwendungsfall war zwar etwas komplexer als das Minimalbeispiel, da ich den Font zur Laufzeit dynamisch anpassen möchte und man den JColorChooser etwas dazu überreden muss. Aber einmal auf die richtige Fährte mit dem UIManager gesetzt, war das auch kein Problem mehr. Nun kann ich fröhlich weiter implementieren! Danke! :toll:

Shadowqueen105
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing JColorChooser für die JToggleButtons AWT, Swing, JavaFX & SWT 5
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
B Swing JColorChooser verstehen AWT, Swing, JavaFX & SWT 41
B JColorChooser - Locale setzen AWT, Swing, JavaFX & SWT 3
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
Y JColorChooser verwenden AWT, Swing, JavaFX & SWT 8
F JColorChooser NICHT im Dialog AWT, Swing, JavaFX & SWT 12
T JColorChooser abbrechen... AWT, Swing, JavaFX & SWT 2
D "JFontDialog" analog JColorChooser AWT, Swing, JavaFX & SWT 4
C open source JColorChooser? AWT, Swing, JavaFX & SWT 2
DeeDee0815 JColorChooser PreviewComponent AWT, Swing, JavaFX & SWT 6
T mouse-event auf jcolorchooser AWT, Swing, JavaFX & SWT 2
S JColorChooser Prob mit Ok/Abbr. AWT, Swing, JavaFX & SWT 3
G Thread und JColorChooser? AWT, Swing, JavaFX & SWT 11
B Event bei JColorChooser AWT, Swing, JavaFX & SWT 3
D jcolorchooser - lost focus AWT, Swing, JavaFX & SWT 2
G Alternative zum JColorChooser AWT, Swing, JavaFX & SWT 4
0 Ist "sequence.fallback" aus den font.properties zur Laufzeit änderbar AWT, Swing, JavaFX & SWT 0
I Anderes (schlechteres) Font-Rendering in OpenJDK 8 AWT, Swing, JavaFX & SWT 21
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B AWT Font Größenverhältnisse AWT, Swing, JavaFX & SWT 2
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
L Font für Dashboard AWT, Swing, JavaFX & SWT 3
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
Y Globale Font-Color definieren AWT, Swing, JavaFX & SWT 5
F java.awt.Font - ist das wirklich alles? AWT, Swing, JavaFX & SWT 3
Luk10 Ungewollte Unicode Characters im Font AWT, Swing, JavaFX & SWT 5
S Font laden, Wort zeichnen und animieren..? AWT, Swing, JavaFX & SWT 2
M Font Size in FormsEditor AWT, Swing, JavaFX & SWT 2
F Font in JTable setzen AWT, Swing, JavaFX & SWT 7
1 Font ändern AWT, Swing, JavaFX & SWT 5
I Textbreite von Font inklusive Tabs ermitteln AWT, Swing, JavaFX & SWT 4
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
Dit_ Font durchgestrichen AWT, Swing, JavaFX & SWT 6
B Welche Font Family ist vorhanden? AWT, Swing, JavaFX & SWT 3
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
G Frame,Font,Standard,Schriftart,JFrame AWT, Swing, JavaFX & SWT 3
M JSpinner Font ändern AWT, Swing, JavaFX & SWT 4
H anderes font in textarea AWT, Swing, JavaFX & SWT 2
Schandro Den größten passenden java.awt.Font zu einem Rectangle berechnen AWT, Swing, JavaFX & SWT 2
D Font laden AWT, Swing, JavaFX & SWT 2
T Font mit Border AWT, Swing, JavaFX & SWT 7
Fu3L Wie Schriftfarbe und Font global setzen? AWT, Swing, JavaFX & SWT 5
J Font Änderung nach Editorwechsel? AWT, Swing, JavaFX & SWT 3
A Font: Ist Schriftart überall verfügbar? AWT, Swing, JavaFX & SWT 4
I font-größe ermitteln AWT, Swing, JavaFX & SWT 4
S jTable Font einer Zelle ändern AWT, Swing, JavaFX & SWT 5
StephenKing Font-Größe in JTextField normalisieren AWT, Swing, JavaFX & SWT 6
DEvent Standard Font-Auswahl-Dialog? AWT, Swing, JavaFX & SWT 15
I GUI - Font und Labelklick AWT, Swing, JavaFX & SWT 6
S JTree - Renderer - Font AWT, Swing, JavaFX & SWT 3
R Schriftfarbe ändern in JTextArea / Font bekommen AWT, Swing, JavaFX & SWT 2
V Font setzen in JLabel AWT, Swing, JavaFX & SWT 6
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
TheJavaKid font lässt sich bei der jtextarea nur einmal ändern AWT, Swing, JavaFX & SWT 3
G Font in JTextArea ändern AWT, Swing, JavaFX & SWT 2
I Font 2 Vektor AWT, Swing, JavaFX & SWT 3
V falscher Unicode font AWT, Swing, JavaFX & SWT 6
S Hilfe bei java.awt.Font AWT, Swing, JavaFX & SWT 7
H Create Font will nicht AWT, Swing, JavaFX & SWT 5
G Font tiefergestellt AWT, Swing, JavaFX & SWT 2
G Font nur für einen Teil String im JTextArea AWT, Swing, JavaFX & SWT 5
H Liste von Font Sizes und Colors AWT, Swing, JavaFX & SWT 4
D Font eines JLabels verändern, JLabel mit LookAndFeel-Format AWT, Swing, JavaFX & SWT 2
B Font fett setzen AWT, Swing, JavaFX & SWT 2
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
missy72 JavaFX RowFactory Schriftfarbe ändern AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
W JavaFX CSS ändern wirft NPE AWT, Swing, JavaFX & SWT 8
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben