Text eines JLabel setzen

cHucKy51

Mitglied
Hallo,
was mache ich beim setzen des Textes eines JLabel falsch?
Der User soll in einem KonfigFenster eine Überschrift in ein JTextField schreiben und per Button bestätigen. Diese Überschrift soll nun im HauptFenster zur Laufzeit erscheinen.

Dieser Abschnitt steht, in einer Methode verpackt, im HauptFrame
Java:
		// Das Label "Überschrift", das in der Konfiguration verändert werden soll, wird hier erzeugt
		labelUeberschrift = new JLabel("Überschrift");
		
		JPanel jpLabel = new JPanel();
		jpLabel.add(labelUeberschrift);
		contentPane.add("North", jpLabel);

Dieser Code-Abschnitt stammt aus der ConfigFrame:
Java:
	// Aus diesem JTextField soll die Eingabe des Benutzers gelesen und als Überschrift gesetzt werden 
	private JTextField getJTextFieldUeberschrift() {
		if (jTextFieldUeberschrift == null) {
			jTextFieldUeberschrift = new JTextField();
			jTextFieldUeberschrift.setBounds(new Rectangle(211, 102, 180, 25));
			// eingabeUeberschrift wurde als "private String" deklariert
			eingabeUeberschrift = jTextFieldUeberschrift.getText();
		}
		return jTextFieldUeberschrift;
	}
	
	// Dieser Button führt die Aktion "Überschrift setzen" aus und holt sich dafür die Eingabe aus dem JTextField
	private JButton getJButtonUeberschrift() {
		if (jButtonUeberschrift == null) {
			jButtonUeberschrift = new JButton();
			jButtonUeberschrift.setBounds(new Rectangle(210, 141, 180, 25));
			jButtonUeberschrift.setText("Überschrift setzen");
			jButtonUeberschrift
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							HauptFrame haupt = new HauptFrame();
							haupt.labelUeberschrift.setText(eingabeUeberschrift);
							haupt.repaint();
						}
					});
		}
		return jButtonUeberschrift;
	}
 
Vielleicht solltest Du kein neues HauptFrame im ActionListener erzeugen, sondern den Text des existierenden verändern!
 
Ich hab's jetzt so gemacht. Funktionieren tut es leider immer noch nicht.

Java:
						public void actionPerformed(java.awt.event.ActionEvent e) {
							FrameMain.labelUeberschrift.setText(eingabeUeberschrift);
							FrameMain.labelUeberschrift.repaint();
						}
 
Wo kommt denn "eingabeUeberschrift" eigentlich her? Sieht für mich so aus, als würde es den aktuellen Wert aus dem JTextField gar nicht bekommen!
 
steht weiter oben:

Java:
			// eingabeUeberschrift wurde als "private String" deklariert
			eingabeUeberschrift = jTextFieldUeberschrift.getText();
 
Aber das setzt Du doch in getJTextFieldUeberschrift und damit zum Erzeugungszeitpunkt des JTextField!

Du musst dir den neuen Text in actionPerformed holen
 
Zurück