Java gui reset button Problem


#1
Ich brauche Hilfe. Ich habe folgendes Programm :
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.naming.Reference;
import javax.swing.*;

import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultDocument;
import com.sun.xml.internal.txw2.Document;


public class Parkscheinautomat extends JFrame implements ActionListener {

JButton B1 = new JButton(" Bestätigen");
JButton B2 = new JButton(" Löschen");


public Parkscheinautomat() {
super("Parkscheinautomat");

JFrame frame = new JFrame();
JTextField angabe = new JTextField(15);
JPanel panel = new JPanel();
// JPanel panel2 = new JPanel();
JTextArea Textfeld = new JTextArea(11,20);
JTextField ausgabe = new JTextField(15);

Textfeld.setText("Zahlungsmöglichkeiten:\n" +
"Es ist ausschließlich Bar zu zahlen!\n" +
"-----------------------\n" +
"Parkgebühren:\n" +
"30 Minuten = € 0,80\n" +
"1 Stunde = € 1,60\n" +
"2 Stunden = € 3,20\n" +
"-----------------------\n" +
"Höchstparkdauer:\n" +
"2 Stunden\n" );

JScrollPane scrollpane = new JScrollPane(Textfeld);


JLabel L1 = new JLabel("Eingabe Betrag: ");
JLabel L2 = new JLabel("Ihre Parkzeit : ");

Textfeld.setEditable(false);
ausgabe.setEditable(false);

B1.addActionListener(this);
B2.addActionListener(this);

panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
panel.add(scrollpane);
panel.add(L1);
panel.add(angabe);
panel.add(B1);
panel.add(B2);
panel.add(L2);
panel.add(ausgabe);
add(panel);
pack(); //Objekte nehmen die Größe, die sie brauchen
}

public static void main(String[] arguments) {

Parkscheinautomat PA = new Parkscheinautomat();

// PA.setSize(500,500); //Wird wegen pack(); nicht mehr benötigt
PA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PA.setResizable(false);
PA.setLocationRelativeTo(null);
PA.setVisible(true);
}

public void actionPerformed(ActionEvent evt){

Object source = evt.getSource();
if (source == B1)
setTitle("bestätigt");
else if (source == B2)
setTitle("gelöscht");
angabe.setText("");
repaint();
}
}

In der dritten Zeile von unten wird angabe.setText("") rot unterstrichen und gesagt, angabe cannot be resolved. Ich hab überlegt, das Problem mit Instanzvariablen zu lösen, dies aber nicht hinbekommen.
Wenn jemand hier einen Lösungsvorschlag hätte wäre ich sehr dankbar. Ich muss das nämlich fertig kriegen.
Danke im voraus :)
 
#2
Du hast "angabe" im Konstruktor definiert, wodurch dies auch nur innerhalb dieses Blockes gültig/sichtbar ist. Sprich: Wenn du in der "achtionPerformed" Methode darauf zugreifen willst, musst du es als Klassenvariable definieren und im Konstruktor initialisieren.
 
Zuletzt bearbeitet:

Bratkartoffel

gebratene Kartoffel
Premium-User
#3
Hallo LegendaryBeazt,

bitte das nächste mal den Code in entsprechende Tags setzen, dann können wir das auch einfacher lesen:

[code=java]Foo.bar()[/code]

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.naming.Reference;
import javax.swing.*;

import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultDocument;
import com.sun.xml.internal.txw2.Document;

public class Parkscheinautomat extends JFrame implements ActionListener {
       
       JButton B1 = new JButton(" Bestätigen");
       JButton B2 = new JButton(" Löschen");
   
       
   public Parkscheinautomat() {
           super("Parkscheinautomat");
           
           JFrame frame = new JFrame();
           JTextField angabe = new JTextField(15);
           JPanel panel = new JPanel();
   //       JPanel panel2 = new JPanel();
           JTextArea Textfeld = new JTextArea(11,20);
           JTextField ausgabe = new JTextField(15);
           
           Textfeld.setText("Zahlungsmöglichkeiten:\n" +
                            "Es ist ausschließlich Bar zu zahlen!\n" +  
                            "-----------------------\n" +
                            "Parkgebühren:\n" +
                            "30 Minuten = € 0,80\n" +
                            "1 Stunde = € 1,60\n" +
                            "2 Stunden = € 3,20\n" +
                            "-----------------------\n" +
                            "Höchstparkdauer:\n" +
                            "2 Stunden\n"  );
           
           JScrollPane scrollpane = new JScrollPane(Textfeld);
               
       
               JLabel L1 = new JLabel("Eingabe Betrag: ");
               JLabel L2 = new JLabel("Ihre Parkzeit : ");
           
       Textfeld.setEditable(false);
       ausgabe.setEditable(false);
       
       B1.addActionListener(this);
       B2.addActionListener(this);
   
       panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
       panel.add(scrollpane);
       panel.add(L1);
       panel.add(angabe);
       panel.add(B1);
       panel.add(B2);
       panel.add(L2);
       panel.add(ausgabe);
       add(panel);
       pack();   //Objekte nehmen die Größe, die sie brauchen
   }

   public static void main(String[] arguments) {
       
       Parkscheinautomat PA = new Parkscheinautomat();
       
   //   PA.setSize(500,500); //Wird wegen pack(); nicht mehr benötigt
       PA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       PA.setResizable(false);
       PA.setLocationRelativeTo(null);
       PA.setVisible(true);
   }
   
   public void actionPerformed(ActionEvent evt){

       Object source = evt.getSource();
       if (source == B1)
           setTitle("bestätigt");
   else if (source == B2)
       setTitle("gelöscht");
       angabe.setText("");
       repaint();
   }           
}
Grüsse,
BK
 

Neue Beiträge