Swing label.setText() macht probleme

Bastier

Mitglied
Hallo.

Ich bin momentan ein wenig verzweifelt, weil jedes mal, wenn ich die Methode aufrufe, die ein Label in meinem programm ändern soll, kommt nur eine unverständliche Fehlermeldung in der KOnsole von BlueJ. (Ich muss unbedingt mit BlueJ arbeiten für die Schule).

Hier die Fehlermeldung:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Kaufen.ostseite(Kaufen.java:240)
	at Kaufen.preisberechnung(Kaufen.java:249)
	at Kaufen.kl(Kaufen.java:85)
	at Kaufen.access$100(Kaufen.java:12)
	at Kaufen$3.actionPerformed(Kaufen.java:193)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
	at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6268)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6033)
	at java.awt.Container.processEvent(Container.java:2045)
	at java.awt.Component.dispatchEventImpl(Component.java:4629)
	at java.awt.Container.dispatchEventImpl(Container.java:2103)
	at java.awt.Component.dispatchEvent(Component.java:4455)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
	at java.awt.Container.dispatchEventImpl(Container.java:2089)
	at java.awt.Window.dispatchEventImpl(Window.java:2517)
	at java.awt.Component.dispatchEvent(Component.java:4455)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
	at java.awt.EventQueue.access$000(EventQueue.java:96)
	at java.awt.EventQueue$1.run(EventQueue.java:608)
	at java.awt.EventQueue$1.run(EventQueue.java:606)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
	at java.awt.EventQueue$2.run(EventQueue.java:622)
	at java.awt.EventQueue$2.run(EventQueue.java:620)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Und hier mein Quelltext zu der Klasse (noch sehr unübersichtlich, aber bin ja noch Anfänger):

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;

/**
 * Beschreiben Sie hier die Klasse Kaufen.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Kaufen
{

    // statische Datenfelder
    private static final String VERSION = "Version 0.2";
    
    // Datenfelder
    private JFrame infofenster;
    private JPanel bedienfeld;
    private Info fpauskunft;
    private JLabel statusLabel;
    private String ziel;
    private int zielp;
    private int klasse;
    private int karte;
    private int endpreis;
    private String text;
    
    
    /**
     * Konstruktor für Objekte der Klasse GUI
     */
    public Kaufen()
    {
        infofensterErzeugen();
        zielp = 25;
        klasse = 1;
        karte = 1;
        endpreis = 25;
        
    }

    /**
     * Ticketautomat beenden
     */
    private void beenden()
    {
        System.exit(0);
    }
    
    /**
     * Ticketautomat öffnen
     */
    private void automatStarten()
    {
        infofenster.setVisible(false);
        new GUI();
    }
    
    /**
     * Kartenauswahl öffnen
     */
    private void info()
    {
        infofenster.setVisible(false);
        new Info();
    }
    
    /**
     * Zielpreisbestimmung
     */
    private void zi(int a)
    {
        zielp = a;
        preisberechnung();
    }
    
    /**
     * Klassenbestimmung
     */
    private void kl(int a)
    {
        klasse = a;
        preisberechnung();
    }
    
    /**
     * Kartentypbestimmung
     */
    private void fahrten(int a)
    {
        karte = a;
        preisberechnung();
    }
    
    
    
    /**
     * Erzeuge ein Swing-Fenster samt Inhalt
     */
     void infofensterErzeugen()
    {
        infofenster = new JFrame("Ticketautomat " + VERSION + " Kartenauswahl");
        infofenster.setPreferredSize(new Dimension(800, 655));
        Container contentPane = infofenster.getContentPane();
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
        
        menuezeileErzeugen(infofenster);
        
        JPanel welcomePanel = new JPanel();
        
        JLabel welcomeLabel = new JLabel();
        ImageIcon welcomeico = new ImageIcon("M:/Modul 8 - Programmierung - Eiden/Projekt GUI/Bsp Ticketautomat/img/welcome.png");
        welcomeLabel.setIcon(welcomeico);
        Dimension d1 = new Dimension(welcomeico.getIconWidth(), welcomeico.getIconHeight());
        welcomeLabel.setPreferredSize(d1);
                welcomePanel.add(welcomeLabel);
        
        JPanel inhalt = new JPanel(new BorderLayout());
        
        JPanel ostseite = new JPanel(new GridLayout(0,1));
        JPanel flowost = new JPanel();
        
        JPanel preisanzeige = new JPanel();
        JLabel gp = new JLabel("Gesamtpreis:");
        ostseite.add(gp);
        JTextField statusLabel = new JTextField("0");
        
        ostseite.add(statusLabel);
        
        JButton best = new JButton("Bezahlen");
        ostseite.add(best);
       
        
        flowost.add(ostseite);
        inhalt.add(flowost, BorderLayout.EAST);
        
        
        JPanel westseite = new JPanel(new GridLayout(0,1));
        JPanel flow = new JPanel();
        
        JLabel label1 = new JLabel("Wohin möchten Sie fahren?");
        westseite.add(label1);
        
        JRadioButton ko = new JRadioButton("Nach Koblenz");
        
        JRadioButton tr = new JRadioButton("Nach Trier");
        ButtonGroup zielbuttons = new ButtonGroup();
        zielbuttons.add(ko);
        zielbuttons.add(tr);
        westseite.add(ko);
        westseite.add(tr);
        
        JLabel label2 = new JLabel("Welche Klasse?");
        westseite.add(label2);
        
        JRadioButton ek = new JRadioButton("1. Klasse");
        JRadioButton zk = new JRadioButton("2. Klasse");
        
        ButtonGroup klassebuttons = new ButtonGroup();
        klassebuttons.add(ek);
        klassebuttons.add(zk);
        westseite.add(zk);
        westseite.add(ek);
        
        JLabel label3 = new JLabel("Ticketart:");
        westseite.add(label3);
        
        JRadioButton ef = new JRadioButton("Einfache Fahrt");
        
        JRadioButton rf = new JRadioButton("Hin- und Rückfahrt");
        JRadioButton wk = new JRadioButton("Wochenkarte");
        JRadioButton mk = new JRadioButton("Monatskarte");
        ButtonGroup ticketbuttons = new ButtonGroup();
        ticketbuttons.add(ef);
        ticketbuttons.add(rf);
        ticketbuttons.add(wk);
        ticketbuttons.add(mk);
        westseite.add(ef);
        westseite.add(rf);
        westseite.add(wk);
        westseite.add(mk);
        
               
        ko.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { zi(25); }
                           });
        tr.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { zi(25); }
                           });
        zk.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { kl(1); }
                           });
        ek.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { kl(2); }
                           });
        ef.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { fahrten(1); }
                           });
        rf.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { fahrten(2); }
                           });
        wk.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { fahrten(5); }
                           });
        mk.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { fahrten(20); }
                           });
                           
        flow.add(westseite);
        inhalt.add(flow, BorderLayout.WEST);
        
        
        
        JPanel buttonLeiste = new JPanel(new GridLayout(1,0));
        JButton backButton = new JButton("Zurück zum Start");
        backButton.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { automatStarten(); }
                           });
        JButton kaufenButton = new JButton("Fahrplaninfo");
        kaufenButton.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { info(); }
                           });
        buttonLeiste.add(backButton);
        buttonLeiste.add(kaufenButton);
        
        contentPane.add(welcomePanel);
        contentPane.add(inhalt);
        contentPane.add(buttonLeiste);
        infofenster.pack();
        infofenster.setVisible(true);
    }
    
    /**
     * Preisfenster erzeugen
     */
    private void ostseite(String text)
    {
        statusLabel.setText(text);
    }
   /**
     * Preisberechnung
     */
    private void preisberechnung()
    {
        endpreis = zielp * klasse * karte;
        text = Float.toString(endpreis);
        ostseite(text);
    }
    
    /**
     *  Methode zum Erzeugen der Menüzeile
     */
    private void menuezeileErzeugen(JFrame fenster)
    {
        final int SHORTCUT_MASK =
            Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();

        JMenuBar menuezeile = new JMenuBar();
        fenster.setJMenuBar(menuezeile);
        
        JMenu menue;
        JMenuItem eintrag;
        
        
        menue = new JMenu("Datei");
        menuezeile.add(menue);
        JMenu aktionsMenue = new JMenu("Aktion");
        menuezeile.add(aktionsMenue);
        
        eintrag = new JMenuItem("Karte kaufen");
        aktionsMenue.add(eintrag);
        
        eintrag = new JMenuItem("Fahrplanauskunft");
        eintrag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, SHORTCUT_MASK));
        eintrag.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { info(); }
                           });
                aktionsMenue.add(eintrag);
        
        eintrag = new JMenuItem("Neu starten");
            eintrag.setAccelerator(KeyStroke.getKeyStroke("F2"));
            eintrag.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { automatStarten(); }
                           });
        menue.add(eintrag);

        menue.addSeparator();

        eintrag = new JMenuItem("Beenden");
            eintrag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
            eintrag.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { beenden(); }
                           });
        menue.add(eintrag);
    }
    
}

Hat jemand eine Lösung, oder nen Hinweis für mich?? Es geht nur darum, das statusLabel zu verändern, sobald einer der Radiobuttons aktiviert wurde.

Vielen Dank schonmal,

Basti
 
M

Marcinek

Gast
Ohne mir das alles durchzulesen.

1. Google nach der Fehlermeldung
2. Du rufst setText auf einem NULL . Objekt auf.

Gruß,

Martin
 

pl4gu33

Top Contributor
wie Marcinek schon sagt, die Variable ist "null".

du initalisierst hier nämlich ein eigenes Objekt in der Methode und nicht das Objekt, welches du als Attribut hast:

Java:
   JTextField statusLabel = new JTextField("0");
 

Bastier

Mitglied
Erstmal vielen Dank euch beiden.

Wenn ich aus
Code:
JTextField statusLabel = new JTextField("0");

Code:
JTextField statusLabel = new JTextField(text);

mache, funktioniert es genausowenig :/

oder muss ich text vorher noch etwas zuweisen?
 

pl4gu33

Top Contributor
JTextField statusLabel = new JTextField("0"); so erzeugst du eine neue Variable.

Du willst aber dein Attribut der Klasse befüllen :
Java:
    private JLabel statusLabel;

Java:
statusLabel = new JLabel("0");
 

Bastier

Mitglied
Ich bin so doof :oops: Da sitz ich jetzt seit 3 Tagen dran und war kurz davor, mir das Leben zu nehmen :lol:

Sobald ich die Danke-Funktion hier finde, bekommst du eins :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
zhermann NullPointerException bei Label.setText() AWT, Swing, JavaFX & SWT 5
B Label mit setText geschriebener Text wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
izoards Ausdruck auf Label Drucker AWT, Swing, JavaFX & SWT 1
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
I BoxLayout zentriert Label nicht AWT, Swing, JavaFX & SWT 7
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
R JavaFX Label oder Imageview anzeigen mit Buttonklick AWT, Swing, JavaFX & SWT 4
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
ralfb1105 JavaFX Label lässt sich innerhalb service Task nicht updaten? AWT, Swing, JavaFX & SWT 22
Trèfle JavaFX Formattierung im Label AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
F Countdown in Label anzeigen AWT, Swing, JavaFX & SWT 14
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
J Dateiname im Label einblenden AWT, Swing, JavaFX & SWT 4
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
T JavaFX Label mit mehreren Images AWT, Swing, JavaFX & SWT 11
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
L JavaFX ContextMenu bei Label mit Linksklick AWT, Swing, JavaFX & SWT 4
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
N Anordnung der Label AWT, Swing, JavaFX & SWT 3
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
D JavaFX Label lässt sich nicht mehrmals färben AWT, Swing, JavaFX & SWT 7
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Augenblau JavaFX Wechselnde Werte in Label darstellen AWT, Swing, JavaFX & SWT 7
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
B Swing JXMapKit Mausemove in Label anzeigen AWT, Swing, JavaFX & SWT 0
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
G Label wird nicht erstellt AWT, Swing, JavaFX & SWT 0
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
G Label erstellen AWT, Swing, JavaFX & SWT 6
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
F JavaFX label.getWidth() AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
N Input/Output Stream werte in Label anzeigen. AWT, Swing, JavaFX & SWT 6
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
G JavaFX CSS: Label in GridPane rechts ausrichten AWT, Swing, JavaFX & SWT 9
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Buchstaben im Label anders färben AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
P Label rotieren mit Timer AWT, Swing, JavaFX & SWT 5
C Label wird nicht an der richtigen Position angezeigt.. AWT, Swing, JavaFX & SWT 7
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
J resize - Label bleibt erst schwarz AWT, Swing, JavaFX & SWT 4
T label überschriebt seine werte-SWT AWT, Swing, JavaFX & SWT 3
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
N Label auf Hauptfenster manipulieren AWT, Swing, JavaFX & SWT 2
S VAADIN: Problem mit Label AWT, Swing, JavaFX & SWT 18
P Ausgabe Label AWT, Swing, JavaFX & SWT 6
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Label breite ermitteln vor dem rendern? AWT, Swing, JavaFX & SWT 7
A Bekomme das Label nicht in die Mitte von Reihe AWT, Swing, JavaFX & SWT 7
H SWT Markierbares Label AWT, Swing, JavaFX & SWT 8
A Swing Box Label ausrichten AWT, Swing, JavaFX & SWT 3
R Label in den Vordergrund einblenden AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
A TextField und Label AWT, Swing, JavaFX & SWT 8
L Label dynamisch awt AWT, Swing, JavaFX & SWT 2
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
B Die Werte von getLocation() im Label anzeigen AWT, Swing, JavaFX & SWT 4
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Label Hintergrundbild mit Text AWT, Swing, JavaFX & SWT 6
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8
hdi SWT Label Text vertikal zentrieren AWT, Swing, JavaFX & SWT 6
T In einem Label scrollen AWT, Swing, JavaFX & SWT 3
Spot84 swt label zeilenumbruch will nicht funktionieren AWT, Swing, JavaFX & SWT 1
L JFreeChar Label für StackedBar AWT, Swing, JavaFX & SWT 3
lumo SWT Label - onResize? AWT, Swing, JavaFX & SWT 5
DasDogma AWT Problem bei Wertzuweisung für Label AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben