ActionListener zwei Buttons zuweisen

Ci

Aktives Mitglied
Hallo,

hat jemand ne Idee, weshalb ich diese Fehler bekomme, die ich im Code kommentiert hab?
Ich möchte wie im Überschrift erwähnt, zwei Buttons separat den ActionListener zuweisen.

Bin leider nicht so fit im programmieren und bin mir deshalb nicht so sicher was ich in meinem Code falsch gemacht hab! hof mir kann jmd. helfen.

gruß

Java:
/*hier die ganze Gui Klasse mit den einzelnen Fehlermeldungen! Wenn ich die einzelnen Buttons
  mit ActionListener bestücke, dann werd ich von Fehlermeldungen überschüttet.
  Mit der anderen Variante funktioniert alles einwandfrei, also wenn mein ActionListener schon
  in der Zeile: class GUI_ATR extends JFrame implements ActionListener{ implementiert ist!
  Nur brauch ich das ja nicht in der Form :(
  hoff du kannst mir bei den Fehlermeldungen helfen. gruß*/
 
package getATR;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.smartcardio.CardException;
import javax.swing.*;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class GUI_ATR extends JFrame{
       
        // Meine Button
        public static JButton daten_pruefen = new JButton();
        public static JButton pruefung_abschließen = new JButton();
       
       
        public static JLabel lblKartennr = new JLabel("* Karten-Nr.:");
        public static JFormattedTextField txtFKartennr;
 
        public static JTextArea textArea = new JTextArea();
        private final JScrollPane scrollPane = new JScrollPane();
       
        static File f;
        static String path_f;
        static int returnVal;
       
        public void gui_leeren() {
               
                // um mein Textfeld zu leeren
                textArea.setText("");
                lblKartennr.setVisible(false);                                 
                txtFKartennr.setVisible(false);
               
        }     // Fehlermeldung Multiple markers at this line. Syntax error on token "}",
              // delete this token ...versteh aber nicht warum!
              // Ich schließ hier meine Klammer ganz normal, deshalb bin ich etwas verwirrt!
       
       
 
        /////////////////////////////////////////////////
        // Daten prüfen Button
        /////////////////////////////////////////////////
        daten_pruefen.addActionListener(new ActionListener(){  
        public void actionPerformed(ActionEvent e) {
                open_terminal();
                karteninhalt_auslesen.init_log_command_list();
                if (e.getSource() == this.daten_pruefen) {    //Fehlermeldung "daten_pruefen can't be resolved or is not a field"
                        gui_leeren();
                        open_terminal();
                        if (Connect_Terminal.isTerminal_present() == true) {
                                open_card();
                                if (Connect_Card.isCard_present() == true) {
                                       
                                       
                                        lblKartennr.setVisible(true);
                                        txtFKartennr.setVisible(true);
                                        init_osVersion();
                                        try {
                                               
                                                //Karteninhalt ausgeben
                                                karteninhalt_auslesen.ausgabe_auswahl();
                                       
                                        } catch (CardException e1) {
                                                e1.printStackTrace();
                                        }
                                       
                                } else {
                                        GUI_ATR.textArea.append("Keine Karte vorhanden");
                                       
                                }
                        } else {
                                GUI_ATR.textArea.append("Chipkartenleser ist nicht eingesteckt");
                        }
                }
        }
        });
               
               
                /////////////////////////////////////////////////
                // Prüfung abschließen Button
                /////////////////////////////////////////////////
       
                pruefung_abschließen.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
                if (e.getSource() == this.pruefung_abschließen) {  //Fehlermeldung "pruefung_abschließen can't be resolved or is not a field"
               
                        gui_leeren();
                        open_terminal();
                       
                        GUI_ATR.textArea.append("...Formular geleert!");
                }              
        }
        });  // Fehlermeldung "Syntax Error"
       
       
       
       
        public static void init_osVersion() {
                Inhalt_ATR.init_ATR();
                Inhalt_ATR.convert_atr();
                Inhalt_ATR.init_all_Maps();
                Inhalt_ATR.set_all_Variables();
        }
       
 
        public static void open_terminal() {
                Connect_Terminal.create_factory();
                try {
                        Connect_Terminal.create_terminals(0);
                } catch (CardException e2) {
                        textArea.append(e2.toString());
                } catch (Exception e2) {
                        textArea.append(e2.toString());
                }
        }
 
        public static void open_card() {
                try {
                        Connect_Card.newCard();
                } catch (CardException e1) {
                        GUI_ATR.textArea.append(e1.toString());
                }
        }
 
        public static void File_chooser() throws IOException {
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                returnVal = fc.showOpenDialog(null);
 
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                        setF(fc.getSelectedFile());
                        // System.out.println(f.getPath());
                        setPath_f(f.getPath());
                }
        }
 
        public static File getF() {
                return f;
        }
 
        public static void setF(File f) {
                GUI_ATR.f = f;
        }
 
        public static String getPath_f() {
                return path_f;
        }
 
        public static void setPath_f(String path_f) {
                GUI_ATR.path_f = path_f;
        }
 
        public GUI_ATR() {
                setTitle("TEST");
               
                this.setVisible(true);
                setSize(1010, 532);
                setLocation(150, 100);
                setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
                JPanel panel = new JPanel();
                getContentPane().add(panel);
                panel.setLayout(null);
               
                // Daten prüfen Button
               
                panel.add(daten_pruefen);
                daten_pruefen.setSize(70, 35);
                daten_pruefen.setLocation(5, 5);
                daten_pruefen.setText("<html>Daten<br>pruefen</html>");
       
                // Prüfung abschließen Button
               
                panel.add(pruefung_abschließen);
                pruefung_abschließen.setSize(95, 35);
                pruefung_abschließen.setLocation(350, 5);
                pruefung_abschließen.setText("<html>Pruefung<br>abschliessen</html>");
 
                // Karten-Nr.:
                lblKartennr.setBounds(458, 259, 81, 14);
                panel.add(lblKartennr);
                lblKartennr.setVisible(false);
               
                txtFKartennr = new JFormattedTextField();
                txtFKartennr.setBounds(579, 256, 100, 20);
                panel.add(txtFKartennr);
                txtFKartennr.setVisible(false);
               
                // Text Area
               
                scrollPane.setBounds(5, 45, 440, 455);
                panel.add(scrollPane);
                scrollPane.setViewportView(textArea);
               
               
                addWindowListener(new meinWindowListener());
               
                /* ist hier mein ...addActionListener(this) richtig platziert?*/
                //----------------------------------------------------------//
                daten_pruefen.addActionListener(this);
                pruefung_abschließen.addActionListener(this);
                //----------------------------------------------------------//
               
                /* Fehlermeldung in den beiden Zeilen: " The method addActionListener(ActionListener)
                 * in the typ AbstractButton is not applicable for the arguments (GUI_ATR)
                 * */
        }
 
        public class meinWindowListener extends WindowAdapter {
                public void windowClosing(WindowEvent a) {
                        System.exit(0);
                }
        }
}
 
S

SlaterB

Gast
> daten_pruefen.addActionListener(new ActionListener(){ usw,
ist keine Variablendeklaration, darf deshalb nicht direkt in der Klasse stehen sondern gehört in eine Methode,

die Fehlermeldung von Java ist da in der Tat kontraproduktiv,will die korrekte Klammer davor verschieben..

andere Fehler sind eigentlich recht leicht, die Klasse selber ist kein ActionListener, kann also nicht also solcher übergeben werden,
eine statische Variable x kann nicht mit this.x angesprochen werden
 

Ci

Aktives Mitglied
muss ich meine Buttons nicht in einen Konstruktor packen?

Java:
public void GUI_ATR(){
.
.
}

also grad die zwei Zeilen:

Java:
public static JButton daten_pruefen = new JButton();
        public static JButton pruefung_abschließen = new JButton();


wenn ja, wie kann ich das programmiertechnisch beweltigen?
 
S

SlaterB

Gast
> muss ich meine Buttons nicht in einen Konstruktor packen?

mache es so wenn du es für richtig hälst

> wenn ja, wie kann ich das programmiertechnisch beweltigen?

schau dir irgendwelche GUI-Programme auf der Welt an, in den meisten Fällen haben die eh einen überfüllten Konstruktor,
wobei das im Grunde auch absolute Java-Grundlagen sind, eine Variable deklarieren und später ihr etwas zuweisen,
wenn du das nicht weißt was machst du dann hier bei GUIs? meine Zeit möchte ich auch nicht verschwenden
 

Ci

Aktives Mitglied
bestimmte Funktionene werden ausgeführt, wenn ich auf Daten prüfe Button click, diese Funktionen sind in ner anderen Klasse! wenn ich static weglasse, dann bringt er mir die Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
Cannot make a static reference to the non-static field GUI_ATR.daten_pruefen


ist es schlimm wenn ich stehen hab?
anders funktionierts ja nicht :(
 
S

SlaterB

Gast
Gegenfrage:
du greifst in deinem Programm auf die andere Klasse JTextArea zu,
würdest du JTextArea.setText() schreiben, käme die Fehlermeldung

Unresolved compilation problem:
Cannot make a static reference to the non-static method JTextArea.setText()

ist die einzige Lösung nun, die komplette Java-API auszutauschen um diese Methode static zu machen oder gibt es noch andere Wege?
 

Ci

Aktives Mitglied
keine Ahnung! Wie gesagt, bin nicht so fit im programmieren!

JTextArea ist nicht die andere Klasse, sondern nur ein Textfeld. aber es wird in der anderen Klasse auch benutzt! Denn in meiner anderen Klasse gebe ich die Daten direkt im Textfeld aus!

unzwar mit:
Java:
GUI_ATR.textArea.append("blabla:" + getTypname());
 
S

SlaterB

Gast
die richtige Lösung wäre nicht direkt mit der Klasse zu arbeiten sondern mit einem bestimmten Objekt der Klasse,
naja, unendliche Aufgabe wohl diese Hilfe
 

Ci

Aktives Mitglied
also statt immer GUI_ATR.textArea.... in meiner GUI_ATR Klasse ein Objekt anlegen und damit meine Ausgabe aus der anderen Klasse ausgeben lassen?!
...um so quasi unabhängig von der GUI_ATR Klasse zu sein, versteh ich das richtig?
 
S

SlaterB

Gast
es geht um den Zugriff auf die GUI von einer anderen Klasse aus, da scheint grundsätzlich 'in meiner GUI_ATR Klasse ein Objekt anlegen' ein falsches Thema zu sein,
'unabhängig von der GUI_ATR Klasse zu sein' ist mir genauso unverständlich,
wenn ich einen Apfel will dann will ich doch nicht unabhängig von einem Apfel sein

eine andere Klasse will auf die GUI zugreifen, also braucht sie das GUI-Objekt, nicht nur die Klasse, fertig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JButton und ActionListener Allgemeine Java-Themen 3
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
V Event Handling ActionListener nur bei "checked" CheckBoxMenuItem Allgemeine Java-Themen 2
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
S Methode funktioniert nicht als ActionListener Allgemeine Java-Themen 4
C ActionListener - ToggleButton als von KI geklickt "markieren" Allgemeine Java-Themen 2
A ActionListener blockiert Bedienung des ganzen Systems Allgemeine Java-Themen 8
Z Swing Problem mit ActionListener Allgemeine Java-Themen 6
X getText undefiniert in ActionListener Allgemeine Java-Themen 5
D ActionListener wird mit jedem Mal öfter aufgerufen Allgemeine Java-Themen 2
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
F Swing NetBeans nimmt ActionListener nicht an. Allgemeine Java-Themen 2
C Event Handling ActionListener manuell auslösen Allgemeine Java-Themen 8
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
P ActionListener / Label Name auslesen Allgemeine Java-Themen 2
T ActionListener und Singleton Allgemeine Java-Themen 15
J ActionListener-Klasse will Methode nicht annehmen Allgemeine Java-Themen 6
G Übergabeparameter an ActionListener Allgemeine Java-Themen 9
Z Mit ActionListener in anderem Frame lauschen? Allgemeine Java-Themen 3
W 2 Klassen + ActionListener Allgemeine Java-Themen 2
G Anonymen Buttons in for schleife ActionListener hinzufügen Allgemeine Java-Themen 5
C JTree: ActionListener auf die Nodes Allgemeine Java-Themen 3
C ActionListener reagiert zu oft Allgemeine Java-Themen 5
MQue ActionListener und GUI trennen Allgemeine Java-Themen 3
L ActionListener / Buttons Allgemeine Java-Themen 8
E ActionListener Allgemeine Java-Themen 8
TheJavaKid Programmablauf anhalten bis actionlistener ausgeführt wurde Allgemeine Java-Themen 6
minzel ActionListener aus Package Allgemeine Java-Themen 24
F AbstractAction und ActionListener Allgemeine Java-Themen 2
J variablen wert ändernung mit einer art actionlistener? Allgemeine Java-Themen 4
K ActionListener ohne implements? Allgemeine Java-Themen 2
L ActionListener > Variable ... u.v.m. Allgemeine Java-Themen 19
W ActionListener + Klasse einbinden Allgemeine Java-Themen 2
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
D Zwei Listen vergleichen Allgemeine Java-Themen 7
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
kodela Zwei gleichzeitig gedrückte Steuertasten Allgemeine Java-Themen 10
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Zwei Wavdateien gleichzeitig mit SourceDataLine abspielen Allgemeine Java-Themen 0
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Kollision von zwei Kreisen Allgemeine Java-Themen 15
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
P Zwei Applikationen mit einem Job Allgemeine Java-Themen 0
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
F Webstart zwei Java Versionen / aktivieren bzw deaktivieren Allgemeine Java-Themen 2
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
E zwei Gleitkommazahlen durcheinander dividieren Allgemeine Java-Themen 2
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
T Wie heißt ein Binärbaum, dessen Knoten immer zwei Kinder haben müssen? Allgemeine Java-Themen 2
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
1 zwei Strings vergleichen Allgemeine Java-Themen 16
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4
G Zwei bytes vergleichen Allgemeine Java-Themen 2
B zwei-dimensionale Collections bzw. Array mit Indizes Allgemeine Java-Themen 3
C Zwei Arrays vereinen Allgemeine Java-Themen 3
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
N hashCode() für zwei ints Allgemeine Java-Themen 5
turmaline Gleichheit von zwei Maps Map <String, Map <String, String>> Allgemeine Java-Themen 30
N Wie Listenabgleich auf zwei CPU Cores auslagern? Allgemeine Java-Themen 6
D Zufall wahr bzw. falsch mit zwei Faktoren Allgemeine Java-Themen 10
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
H Zwei unabhängige Threads miteinander kommunizieren lassen Allgemeine Java-Themen 3
G zwei mal synchronized Allgemeine Java-Themen 5
Z zwei Daten vergleichen Allgemeine Java-Themen 4
C ArrayList anhand von zwei Attributen sortieren Allgemeine Java-Themen 4
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
T IText: Zwei A4 PDF´s auf ein A3 PDF´s Allgemeine Java-Themen 2
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben