ActionListener

javastudent25

Bekanntes Mitglied
Hallo

Ich habe da eine GUI Programmiert und würde gerne bei den Buttons und dem Slider (später) gerne einen ActionListener hinzufügen.
Nun, wenn ich die kompakte Weise gewählt habe, sprich ActionListener ohne Klassen, wie kann ich dann den Objekten neue Listener hinzufügen?
Im Moment steht da ja noch (this) in der Klammer drin..

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//Diese Aufgabe benötigt die vorgefertigte Klasse SimpleFile.java

public class Aufgabe4 extends JFrame implements ActionListener {

    JFrame window;
    Container container;
    JLabel label;
    JMenuBar menubar;
    JMenu datei, aktionen;
    JMenuItem beenden, öffnen, speichern, aktion1, aktion2, aktion3;
    JPanel buttonPanel;
    JButton buttonLinks, buttonRechts;
    JSlider slider;
    JTextArea textFeld;
    JScrollPane scrollPane;

    Aufgabe4() {

        window = new JFrame("Swing und Event Delegation Model");
        textFeld = new JTextArea(" Hier werden die Aktionen gelistet:");
        scrollPane = new JScrollPane(textFeld);
    
        buttonPanel = new JPanel(); //Erstellen des ButtonPanels
        buttonPanel.setLayout(new FlowLayout());

        slider = new JSlider(JSlider.VERTICAL); //Erstellen eines Sliders
    
        container = window.getContentPane();
        container.setLayout(new BorderLayout());
        container.add(scrollPane, BorderLayout.CENTER);

        label = new JLabel("Warum nimmt eine Blondine eine Scheibe Toast mit aufs WC??");
        container.add(label,BorderLayout.NORTH); //Text adden
        container.add(slider, BorderLayout.EAST); //Slider adden

        menubar = new JMenuBar(); //Menubar erstellen
        datei = new JMenu("Datei"); //Menue erstellen
        aktionen = new JMenu("Aktionen");//Menue erstellen
    
        //MenuItems erstellen
        beenden = new JMenuItem("Beenden");
        öffnen = new JMenuItem("Öffnen");
        speichern = new JMenuItem("Speichern");
        aktion1 = new JMenuItem("Aktion1");
        aktion2 = new JMenuItem("Aktion2");
        aktion3 = new JMenuItem("Aktion3");
        buttonLinks = new JButton("Links");
    
        //Buttons erstellen
        buttonRechts = new JButton("Rechts");
        buttonPanel.add(buttonLinks); //Buttons dem Panel hinzugefügt
        buttonPanel.add(buttonRechts);
    
        //beim ActionListener anmelden
        beenden.addActionListener(this); //wie fügt man verschiedene Listener hinzu, wenn man keine Klassen hat
        öffnen.addActionListener(this);
        speichern.addActionListener(this);
        aktion1.addActionListener(this);
        aktion2.addActionListener(this);
        aktion3.addActionListener(this);
    
        //MenuItems datei hinzufügen
        datei.add(öffnen);
        datei.add(beenden);
        datei.add(speichern);
        aktionen.add(aktion1);//ab hier auch MenuItems den aktionen hinzufügen
        aktionen.add(aktion2);
        aktionen.add(aktion3);

        menubar.add(datei);
        menubar.add(aktionen);
    
        window.setJMenuBar(menubar);
        window.add(buttonPanel,BorderLayout.SOUTH);

        window.setSize(1000, 200);
        window.setVisible(true);
        // window.pack(); //passt die Fenstergrösse auf Textlänge und Texthöhe an
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        Aufgabe4 aufgabe = new Aufgabe4();

    }

    public void actionPerformed(ActionEvent e) {  //wie mache ich mehrere Listener mit der Methode wenn keine Klassen

        if (e.getActionCommand() == "Beenden") {
            System.exit(0);
        }
        if (e.getActionCommand() == "Öffnen") {
            JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            String path = chooser.getSelectedFile().getPath();
            SimpleFile file = new SimpleFile(path);
            label.setText(file.read());
            //label.append("\n"+file.read());   //die Methode gibt es nicht heisst es
        }
        if (e.getActionCommand() == "Speichern") {            
            System.out.println("Jetzt sollte ich etwas speichern");
            }
        if (e.getActionCommand() == "Aktion1") {
            System.out.println("Jetzt sollte aktion 1 passieren!");
        }
        if (e.getActionCommand() == "Aktion2") {
            System.out.println("Jetzt sollte aktion 2 passieren!");
        }
        if (e.getActionCommand() == "Aktion3") {
            System.out.println("Jetzt sollte aktion 3 passieren!");
        }

    
    }
}

Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;

public class SimpleFile {
   
    private String filename;
   
    public SimpleFile(String fname) {
        this.filename = fname;
    }
   
    public String read() {
        String content = "";
        try {
            FileReader fi = new FileReader(filename);
            BufferedReader bufRead = new BufferedReader(fi);
            String line;
            line = bufRead.readLine();
            while (line != null){
                content=content+line+'\n';
                line = bufRead.readLine();
            }
            fi.close();
            bufRead.close();
        }
        catch (Exception ex) {
            System.out.print(ex.getMessage());
        }
        return content;
    }
   
    public void write(String content) {
        try {
            FileWriter outFile = new FileWriter(filename);
            PrintWriter out = new PrintWriter(outFile);
            out.write(content);
            outFile.close();
            out.close();
        }
        catch (Exception ex) {
            System.out.print(ex.getMessage());
        }
    }
}


7emyv54s.jpg
7emyv54s.jpg
 

javastudent25

Bekanntes Mitglied
http://www.codejava.net/java-core/the-java-language/java-8-lambda-listener-example

Stringvergleiche nicht mit ==

Wenn du dich ein bisschen länger mit den Themen auseinandersetzen würdest, müsstest du nicht immer gleich fragen. In vielen Büchern sind deine Fragen geklärt. Ich fühle mich langsam als würde ich ein Grundlagenbuch ersetzen.

http://openbook.rheinwerk-verlag.de...tml#dodtp2cc62faa-e028-49c8-b4cf-b31d9f25a51f

Ich weiss, was du meinst und glaub mir ich geb mein Bestes. Tatsache ist aber, dass ich zw. 1. und 10.Feb. ins. 8 Prüfungen schreiben muss und Informatik (Java) ist nur eines davon. Zudem ist es nicht gerade mein Metier und die Skripte, die ich habe sind eher bescheiden. Da bleibt einem dann halt manchmal nicht viel Zeit ewig zu suchen, leider, auch wenn ich es gern würde...
Ich habe das Buch "Java lernen mit BlueJ hier", aber ausser Übungsaufgaben ohne viel Beispielcode, der die Anwendung vor den Übungen ein wenig zeigt, macht das Ganze halt schwer. Ich möchte natürlich nicht, dass du das Gefühl hast mein Grundlagenbuch zu sein, aber du musst es auch nicht wirklich spielen. Ich hoffe aber trotzdem auf ein wenig Verständnis deinerseits und danke dir trotzdem für deine Mühe.
 

javastudent25

Bekanntes Mitglied
danke für die netten Links ;)
hat funktioniert, vielen Dank nochmals

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

//Diese Aufgabe benötigt die vorgefertigte Klasse SimpleFile.java

public class Aufgabe4 extends JFrame implements ActionListener {
 
    JFrame window;
    Container container;
    JMenuBar menubar;
    JMenu datei, aktionen;
    JMenuItem beenden, öffnen, speichern, aktion1, aktion2, aktion3;
    JPanel buttonPanel;
    JButton buttonLinks, buttonRechts;
    JSlider slider;
    JTextArea textFeld;
    JScrollPane scrollPane;
 
    Aufgabe4() {

        window = new JFrame("Swing und Event Delegation Model");
        textFeld = new JTextArea(" Hier werden die Aktionen gelistet:");  //textFeld wird erstellt
        scrollPane = new JScrollPane(textFeld);                    //textFeld wird Konstruktor von JScrollPane übergeben
     
        buttonPanel = new JPanel(); //Erstellen des ButtonPanels
        buttonPanel.setLayout(new FlowLayout());

        slider = new JSlider(JSlider.VERTICAL); //Erstellen eines Sliders
     
        container = window.getContentPane();
        container.setLayout(new BorderLayout());
        container.add(scrollPane, BorderLayout.CENTER);
     
        container.add(slider, BorderLayout.EAST); //Slider adden

        menubar = new JMenuBar(); //Menubar erstellen
        datei = new JMenu("Datei"); //Menue erstellen
        aktionen = new JMenu("Aktionen");//Menue erstellen
     
        //MenuItems erstellen
        beenden = new JMenuItem("Beenden");
        öffnen = new JMenuItem("Öffnen");
        speichern = new JMenuItem("Speichern");
        aktion1 = new JMenuItem("Aktion1");
        aktion2 = new JMenuItem("Aktion2");
        aktion3 = new JMenuItem("Aktion3");
        buttonLinks = new JButton("Links");
     
        //Buttons erstellen
        buttonRechts = new JButton("Rechts");
        buttonPanel.add(buttonLinks); //Buttons dem Panel hinzugefügt
        buttonPanel.add(buttonRechts);
     
        //beim ActionListener anmelden
        beenden.addActionListener(this); //wie fügt man verschiedene Listener hinzu, wenn man keine Klassen hat
        öffnen.addActionListener(this);
        speichern.addActionListener(this);
        aktion1.addActionListener(this);
        aktion2.addActionListener(this);
        aktion3.addActionListener(this);
        buttonLinks.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
              textFeld.append("\nLinks wird angewandt");
           }
        });
        buttonRechts.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
              textFeld.append("\nRechts wird angewandt");
           }
        });
        slider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                JSlider source = (JSlider)e.getSource();
                if (!source.getValueIsAdjusting())
                {
                    textFeld.append("\nDer Reglerwert ist: "+source.getValue());
                }
            }
        });
     
        //MenuItems datei hinzufügen
        datei.add(öffnen);
        datei.add(beenden);
        datei.add(speichern);
        aktionen.add(aktion1);//ab hier auch MenuItems den aktionen hinzufügen
        aktionen.add(aktion2);
        aktionen.add(aktion3);

        menubar.add(datei);
        menubar.add(aktionen);
     
        window.setJMenuBar(menubar);
        window.add(buttonPanel,BorderLayout.SOUTH);

        window.setSize(1000, 200);
        window.setVisible(true);
        // window.pack(); //passt die Fenstergrösse auf Textlänge und Texthöhe an
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        Aufgabe4 aufgabe = new Aufgabe4();

    }

    public void actionPerformed(ActionEvent e) {  //wie mache ich mehrere Listener mit der Methode wenn keine Klassen
        JTextArea label = new JTextArea();
        if (e.getActionCommand() == "Beenden") {
            System.exit(0);
        }
        if (e.getActionCommand() == "Öffnen") {
            JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            String path = chooser.getSelectedFile().getPath();
            SimpleFile file = new SimpleFile(path);
            textFeld.setText(file.read());
        
        }
        if (e.getActionCommand().equals("Speichern")) {             
            textFeld.append("\nJetzt sollte ich etwas speichern");
            }
        if (e.getActionCommand().equals("Aktion1")) {
            textFeld.append("\nJetzt sollte ich etwas Aktion1");
        }
        if (e.getActionCommand().equals("Aktion2")) {
            textFeld.append("\nJetzt sollte ich etwas Aktion2");
        }
        if (e.getActionCommand().equals("Aktion3")){
            textFeld.append("\nJetzt sollte ich etwas Aktion3");
        }

     
    }
}
 
Zuletzt bearbeitet:

javastudent25

Bekanntes Mitglied
Mag sein, dass das vllt. auch eine Grundlagenfrage ist, aber....
eine Frage hätte ich schon noch.
Irgendwo habe ich kann ich mich erinnern, gelesen, dass man die ActionListener Klassen vermeiden soll weil damit die Übersichtlichkeit bewahrt wird.
Nun, jetzt hat es anfangs nur den einen ActionListener gegeben. Daraufhin habe ich die Klasse entfernt und nur die eine Methode publicvoid actionPerformed(ActionEvent e) implementiert.
Danach sind dann aber doch noch irgendwelche Listener dazugekommen. Wie die vom buttonLinks und rechts zB.
Naja, jetzt kann ich ja nicht mehr einfach zu der listener Methode hinzufügen. Denn dann wirds ja grad recht unübersichtlich und oben in der Klasse sowieso!
Wie macht man das dann?
Wieder zurück zu den inneren Klassen?
Klar bei der Prüfung wird auf sowas nicht geschaut und ich könnte sagen, scheiss drauf, aber mich interessierts.
 

Joose

Top Contributor
Das ist Blödsinn :)
Klar bei einem kurzen einfachen Listenerer lohnt sich eine eigene Klasse vielleicht nicht. Aber oftmals gibt es auch Buttons welche beide den gleichen Listener haben oder ähnliches machen.
Hier lohnt sich eine eigene Klasse sicher, da es sonst zu doppelten Code kommt und dieser soll vermieden werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Methoden ActionListener wird übersprungen Java Basics - Anfänger-Themen 3
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
M Button , actionlistener Java Basics - Anfänger-Themen 11
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
T ActionListener auslagern Java Basics - Anfänger-Themen 14
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
Luk10 Problem mit ActionListener Java Basics - Anfänger-Themen 6
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
C ActionListener problem Java Basics - Anfänger-Themen 4
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben