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..
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());
}
}
}