# JLabel-Text in Methode setzen?



## sKren (9. Apr 2015)

Hallo erstmal 
Ich bin blutiger Einsteiger und versuche mich der ganzen OOP / Java zu nähern und habe da auch Spass dran.
Um überhaupt mal eine Übersicht und einen Einstieg zu bekommen habe ich mir auch div. Buchtitel gekauft.
Das eine arbeite ich gerade durch, hänge allerdings im Bereich der GUI fest, dort wird alles mit dem Jigloo Plugin erklärt, dies ist allerding veraltet und ich muss da selbst irgendwie weiter kommen, das openbook von rheinwerk hab ich auch regelmäßig vor Augen.

Nun zu meinem Problem bzw. der Fragestellung:
Ich möchte ein simples Programm das Zentimeter in Zoll umrechnet.
Die GUI wurde mit dem Windowbuilder erstellt, mein Plan war eine rechnen() - Methode und eine setzen() - Methode
zu erstellen, bei der ersten wird per return das Ergebnis zurück gegeben und bei der setzen Methode soll der LabelText geändert werden.

Das Label ist aber scheinbar nicht beschreibbar bzw. zeigt mir keine Änderung wenn ich es IN der Methode setzen möchte. Bei dem vorhandenem TextField klappt es allerdings wunderbar.

Setze ich den Labeltext mit lblAusgabe.setText(rechnen()); direkt in die actionPerformed wird der Text aktualisiert und korrekt ausgegeben.

Ist es nicht möglich das JLabell über eine Methode zu beschriften?

```
package gui;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;

public class Zoll_Zentimeter extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3528182049558920999L;
	private JPanel contentPane;
	private JTextField txtZentimeter;
	private JLabel lblAusgabe;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Zoll_Zentimeter frame = new Zoll_Zentimeter();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Zoll_Zentimeter() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblAusgabe = new JLabel("Ausgabe");
		lblAusgabe.setBounds(269, 91, 56, 16);
		contentPane.add(lblAusgabe);
		
		JButton btnUmrechnen = new JButton("Umrechnen");
		btnUmrechnen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
//			lblAusgabe.setText("" + rechnen());
//			System.out.println(rechnen());  Dieser Abschnitt fuktioniert!
			setzen();		// Hier gibt es eine Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
			}
		});
		btnUmrechnen.setBounds(249, 182, 97, 25);
		contentPane.add(btnUmrechnen);
		
		txtZentimeter = new JTextField();
		txtZentimeter.setBounds(41, 88, 116, 22);
		contentPane.add(txtZentimeter);
		txtZentimeter.setColumns(10);
	}
	double rechnen(){
		double zahl = Double.valueOf(txtZentimeter.getText()) / 2;
		setzen();
		return zahl;
	}
	void setzen() {
		lblAusgabe.setText("AusgabeFunktion");
	
	}
}
```



Vielen vielen dank und lieben Gruß!


----------



## Diabolus (9. Apr 2015)

Hallo  sKren,

du musst in Zeile 53 das erste JLabel entfernen! Denn du möchtest di Instanz ja in der globalen Variable speichern.


----------



## sKren (9. Apr 2015)

Hallo Diabolus,
ich habe das schonmal ausprobiert, da hat es allerdings nicht funktioniert. Vielleicht war der Code aber auch einfach nur vermurkst.

Jetzt funktioniert es einwandfrei! Vielen Dank!


----------

