Codeoptimierung für JComboBox mit Array und Initialisierung eines Textfelds

Codenix

Grünschnabel
Hallo,

ich hab ein kleines Programm geschrieben, das ein Textfeld anzeigt und dessen Textfarbe über eine JComboBox geändert werden kann. Ich stelle mir gerade die Frage ob ich meinen Code noch ein wenig optimieren kann und wollte Euch fragen, ob Ihr vielleicht eine gute Idee habt:

Meine JComboBox fülle ich über ein Array:

Code:
private String[] farbAuswahl = {"Rot", "Gelb", "Blau", "Grün", "Schwarz"};
//für die Auswahl der Foraben
private JComboBox auswahl;
//Hier wird der Text angezeigt
private JLabel anzeige;

Im Konstruktor meiner Klasse, baue ich dann mein Fenster, mit weiteren Elementen auf:

Code:
public Textfarbe_aendern(String titel) {
		super(titel);
		
		
		auswahl = new JComboBox (farbAuswahl);
		auswahl.setEnabled(false);
		auswahl.setSelectedIndex(0);
		
		anzeige = new JLabel("Der Text");
		anzeige.setFont(new Font("Arial", Font.PLAIN, 14));
		
		//GridLayout 2 Spalten und Abstand
		setLayout(new GridLayout(0,2,10,10));
		
		//jetzt werden in Komponenten hinzugefügt
		add(anzeige);
		add(auswahl);
				
		//Listener verbinden
		
		MeinListener listener = new MeinListener();
			
		auswahl.addActionListener(listener);
		auswahl.requestFocus();
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setVisible(true);
		
	}

Die Farben des Textes kann ich derzeit bloß über actionPerformed der Combobox ändern.
Allerdings ist wie man sieht beim Start des Programms in der Combobox bereits "rot" ausgewählt.
Mein Label-TExt ist allerdings schwarz.
Habe ich vielleicht irgendwo eine Kleinigkeit vergessen oder komme ich nicht drum rum im Konstruktor
z.B. eine separate Methode farbesetzen() aufzurufen, wo ich dann explizit nochmal über getSelectedItem die
Farbe auslese und dann über

Code:
anzeige.setForeground(Color.RED);
die richtige Farbe bei Programmstart setze?!

Danke für Eure Hilfe,
 
Hi und Willkommen bei tutorials.de,

du willst zwei Methoden amchen, eine für den Start und eine für laufende Änderungen?
Warum nicht nur eine Einzige, die am Start und im ActionListener aufgerufen wird?
 
Hallo Sheel,

danke für Deine Antwort, das habe ich mir auch schon überlegt, dass ich die Abfragen in der actionPerformed einfach in eine separate Methode auslagere. Dann funktioniert es auch beim Initialisieren des Fensters.
Gibt es aber noch irgendeine andere Möglichkeit ohne separater Methode. D.h. dass ich die Farbabfrage in der ActionPerformed der JComboBox lasse und im Konstruktor nur irgendwie an den ersten Eintrag der Box rankomme und diesen gleich setze?!

Danke und Viele Grüße
 

Neue Beiträge

Zurück