Frage von WieselNiels, 33

Wie kann man mit Java per Button Dateien bearbeiten?

Hallo! Kurz und schnell meine Idee: Ich möchte eine Textdatei per Button klick verändern, es gibt 2 Buttons und somit auch 2 Varianten die Datei zu bearbeiten. Ich habe bereits 2 Codes, weiß aber nicht wie ich die beide zusammenführe bzw. das mit einer Variable regeln kann. Bitte helft mir :D

Mein Code zum Bearbeiten der Textdatei:

public static void connectTo() throws IOException {
    String text = "...";
    String dateiName = "....txt";
    FileOutputStream schreibeStrom = 
                     new FileOutputStream(dateiName);
    for (int i=0; i < text.length(); i++){
      schreibeStrom.write((byte)text.charAt(i));
    }
    schreibeStrom.close();
    System.out.println("Fertig.");
  }
}

Mein Code für das Fenster mit den 2 Buttons:

public class Fenster extends JFrame 
implements ActionListener {

private JButton b1 = new JButton("Case 1");
private JButton b2 = new JButton("Case 2");

public Fenster() 
{
    setDefaultCloseOperation(EXIT_ON_CLOSE);                                
    
    setLocationRelativeTo(null);            
    getContentPane().add(b1);
    getContentPane().add(b2, BorderLayout.SOUTH);   
    rg.addActionListener(this);
    ll.addActionListener(this);
    pack(); 
    
    setVisible(true);   
}

public static void main(String[] args)  {
    new Fenster();
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource()==b1){
        b1.setText("Bearbeitet.");
                    // Bearbeiten der Textdatei fehlt
    }
    if (e.getSource()==b2){
        b2.setText("Bearbeitet.");
                    // Bearbeiten der Textdatei fehlt
    }
}
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 17

Hast es doch fast geschafft.

dein erster Code enthält nur eine Methode, die kannst du theoretisch einfach in in die andere klasse mit rein kopieren. 

Statt 

 rg.addActionListener(this);
ll.addActionListener(this);

meinst du sicherlich:

 b1.addActionListener(this);
b2.addActionListener(this);

Was dir jetzt noch fehlt,  ist der Aufruf deiner Funktion. in actionperformed:

if (e.getSource()==b1){
b1.setText("Bearbeitet.");
connectTo();
}
Kommentar von WieselNiels ,

Danke schonmal für die Hilfe! :)
Habe jetzt aber einen Fehler:

if (e.getSource()==b1){
b1.setText("Bearbeitet.");
connectTo();
}

// Fehler "unhandled exception type IOException"

Kommentar von KnusperPudding ,

Fehler "unhandled exception type IOException"

Heißt natürlich dass du die Ausnahme abfangen musst. z.B. via TryCatch.

Antwort
von gerlochi, 14

Ich und EventListener können zusammen einfach nicht, daher zeige ich dir nur ein bisschen Theoretische Praxis :D.

Also, ersteinmal fügst du wie gesagt einen ActionEventListener zum Button hinzu, da ich das nie ohne einen Fehler geschafft habe (selbst wenn dich den Code aus dem Netz gezogen hab), kann ich dir leider kein Codeschnipsel dazu anfertigen.

Nun fügst du diesen erstellten ActionEventListner auf den Button ein und gibst in die Funktion des Listeners den Code ein, mit dem du die Datei bearbeiten willst.

Ich muss mich nochmal dafür entschuldigen es ohne Beispiele beschreiben zu müssen, aber Stichwörter auf Google helfen da wirklich sehr!

ActionEvent und ActionListener: http://www.java-tutorial.org/actionlistener.html

Kommentar von KnusperPudding ,

Die Actionlistener wurden im Beispielcode des Fragestellers schon angefügt. 

Es fehlt nur der Teil bei dem die erste Methode in die Klasse des Zweiten Beispielcodes kopiert werden muss

Keine passende Antwort gefunden?

Fragen Sie die Community