JTextfield wird nicht ausgelesen

Lightning

Mitglied
Hallo,

ich wollte ein einfachen JTextfield in eine txt Datei schreiben lassen, leider kommt dann eine NullPointerExpection (also irgendwie bekommt der String den eingegebenen Text nicht)
Weis vielleicht jemand woran es liegt?
erstellen der Datei:
--> wenn auf den JButton "ok" gedürckt wird soll der eingegebenen Pfad in die temp_java.txt gespeichert werden.

Java:
       class ButtonL implements ActionListener {
           File temp ;
           JFrame pfad = new JFrame("set your Path");
            JTextField input = new JTextField();
    public void actionPerformed(ActionEvent e) {

       temp = new File("temp_java.txt");
            
            
            pfad.setVisible(true);
            pfad.setSize(500, 200);
            pfad.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            pfad.setResizable(false);
           

            input.setBounds(50, 20, 400, 25);
            pfad.add(input);

            JButton ok = new JButton("ok");
            ok.setBounds(380, 70, 100, 30);
            ok.setVisible(true);
            pfad.add(ok);
            ok.addActionListener((ActionListener) new ButtonL_ok()); {
     

            JButton cancel = new JButton("Cancel");
            cancel.setBounds(380, 110, 100, 30);
            cancel.setVisible(true);
            pfad.add(cancel);
            cancel.addActionListener((ActionListener) new ButtonL_C());



        pfad.addWindowListener(new java.awt.event.WindowAdapter() {
                @Override
    public void windowClosing(WindowEvent winEvt) {
        boolean closed = true;
       if (closed = true)
       new File("temp_java.txt").delete();
        System.out.println("gelöscht");
        System.exit(0);
    }

Schreiben:
Java:
class ButtonL_ok implements ActionListener {
public void actionPerformed(ActionEvent e) {
Writer  fr;
ButtonL text = new ButtonL();
    
     try {

            String einlesen = text.input.getText();
                   
fr = new BufferedWriter(new FileWriter(text.temp));

  fr.write(einlesen);
            System.out.println("test:" + einlesen);
       }

      catch (IOException er) {
           System.out.println("Datei konnte nicht geschrieben werden!");
 }

}
    }


Danke,
Lightning
 

Sneek

Aktives Mitglied
Puh, also ich steig durch deinen Code gerade so gar nicht durch, die ganzen Klassen sind m.M. auch ziemlich unstrukturiert, ist das mehr oder weniger zusammengegoogelt oder hast du dich schonmal mit den Grundlagen befasst, speziell ein bissl Ordnung im Code.

Du musst in deiner actionPerformed()-Methode mittels TextField_Name.getText() den Inhalt vom Textfield auslesen und diesen dann über deinen Writer in eine Datei schreiben. Das ganze kann so aussehen:

Java:
File tmp = new File("tmp.txt");
FileWriter writer = new FileWriter(tmp);

writer.write(TextField_Name.getText());
writer.close();
 

Lightning

Mitglied
Danke für die Antwort.
Ich hab nur den WindowListener "rausgegoogelt" ^^.

Ich habs jetz mal so gemacht du meintest, aber die Textdatei ist immer noch leer:

Java:
class ButtonL_ok implements ActionListener {
public void actionPerformed(ActionEvent e) {

ButtonL text = new ButtonL();
File temp = new File("temp_java.txt");

     try {
            
           
            FileWriter writer = new FileWriter(temp);
            String s = text.input.getText();
            writer.write(text.input.getText());
            writer.close();
            System.out.println("t: " +s);


  
       }

      catch (IOException er) {
           System.out.println("Datei konnte nicht geschrieben werden!");
 }

}
    }

durch den String s und der Ausgabe wollte ich schauen ob er eig. die Eingabe bekommt, aber da kommt ebenfalls nichts raus. :bahnhof:
 

Sneek

Aktives Mitglied
Kollege, so wird das nichts. Ich geb dir jetz mal ne Anleitung:

Du erstellst dir eine Klasse, dort erstellst du deine gesammt GUI, der Kram den du als erstes gepostet hast, ist denke ich mal Schrott. Eine GUI erstellt man nicht in der ActionPerformed()-Methode sondern im Konstrukter der Klasse. In die Klasse implementierst du eine weiter Klasse, die das ActionListener-Interface implementiert und dort "gehört" nur deine actionPerformed()-Methode hinein und in eben diese erstellst du den Algorithmus der in die Datei schreibt. Wenn du das hast, poste deinen Code einfach nochmal.
 
Zuletzt bearbeitet:

Lightning

Mitglied
Hi,

also du meinst ungefähr so?!:

Java:
public class Main  {

   static JFrame mainframe = new JFrame();
   static JFrame pfad = new JFrame("set your Path");
  static  JTextField input = new JTextField();


    public static void main(String[] args) {

       
        mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainframe.setLayout(new GridLayout (0,2,10,10));
        mainframe.setVisible(true);
        mainframe.setSize(500,200);
        GUI();

    }

        public static void GUI() {

        JButton b1 = new JButton ("Path");
        b1.setBorder(new BevelBorder(BevelBorder.RAISED));
        mainframe.add(b1);
        b1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

            pfad.setVisible(true);
            pfad.setSize(500, 200);
            pfad.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            pfad.setResizable(false);
           

            input.setBounds(50, 20, 400, 25);
            pfad.add(input);

            JButton ok = new JButton("ok");
            ok.setBounds(380, 70, 100, 30);
            ok.setVisible(true);
            pfad.add(ok);
                
            JButton cancel = new JButton("Cancel");
            cancel.setBounds(380, 110, 100, 30);
            cancel.setVisible(true);
            pfad.add(cancel);
            cancel.addActionListener((ActionListener) new ButtonL_C());

            JButton aa = new JButton("");
            aa.setBounds(44, 55, 4, 5);
            aa.setVisible(false);
            pfad.add(aa);

            Pfadsetzen ereignis1 = new Pfadsetzen();
                try {
                    ereignis1.Test();
                } catch (IOException ex) {
                    System.err.println("Pfad konnte nicht geschrieben werden");
                }

            }
        });






        JButton b2 = new JButton ("Convert");
        b2.setBorder(BorderFactory.createEtchedBorder());
        mainframe.add(b2);
        b2.addActionListener((ActionListener) new ButtonCo());

        JButton b3 = new JButton ("Run");
        b3.setBorder(new EtchedBorder());
        mainframe.add(b3);



        JButton b4 = new JButton ("Exit");
        b4.setBorder(BorderFactory.createEtchedBorder());
        mainframe.add(b4);





        }


    }

und der Writer:

Java:
public class Pfadsetzen {

    public void Test() throws IOException {
        Main textfeld = new Main();

        System.out.println("test");

        File temp = new File("temp_java.txt");
            FileWriter writer = new FileWriter(temp);
            writer.write(textfeld.input.getText());
            writer.close();

--> aber wie soll ich des textfeld jetz aus der Methode "GUI" in die Klasse "Pfadsetzen" bekommen?


Danke,
Lightning
 

Sneek

Aktives Mitglied
Also das ist alles noch immer ziemlich komisch implementiert. Erstmal solltest du mal die richtige Handhabung von Konstruktoren und ActionListenern via google herausfinden. Konstruktoren haben die Form

Java:
class Klassenname extends JFrame {
public Klassenname(){
//Hier GUI bauen
}
}

Dann würde ich den Kram in actionPerformed() in einer extra Klasse implementieren, die kannst du ja "PathFrame" oder so nennen, und in actionPerformed arbeitest du dann mit einem PathFrame Objekt.
Damit du von überall auf dein Textfield zugreifen kannst, legst du es nicht in irgendeiner Methode an, sondern als Klassenvariable, also auserhalb jeder Methode.

Einen Button fügt man einen ActionListener zu via
Java:
ButtonName.addActionListener(new Name_der_gewünschten_Klasse_mit_ActionListener-Interface())

Ich rate dir wirklich erstmal richtig die Grundlagen durchzugehen.
 
Zuletzt bearbeitet:

Davide

Mitglied
Vieleicht nützt dir das was.


[Java]
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.*;
import javax.swing.border.BevelBorder;


public class GUI extends JFrame implements ActionListener{

JPanel aPanel;
JTextField aTextField;
JButton aButton;
JLabel aLabel;
TheFileWriter theFileWriter;

public GUI() throws IOException{

theFileWriter = new TheFileWriter();

setSize(500 ,200);

aPanel = new JPanel(new GridLayout (0,2,10,10));

aTextField = new JTextField();
aTextField.setBounds(50, 20, 400, 25);

aButton = new JButton("Go");
aButton.setBounds(380, 70, 100, 30);
aButton.addActionListener(this);

aLabel = new JLabel("Status: ");

aPanel.add(aTextField);
aPanel.add(aButton, BevelBorder.RAISED);
aPanel.add(aLabel);
add(aPanel);

setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {

aLabel.setText(theFileWriter.writeTheFile(aTextField.getText()));
}

public static void main(String[] args) throws IOException{

GUI myGui = new GUI();
}
}
[/Java]

[Java]
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class TheFileWriter {

FileWriter fileWriter;
File theFile;

public TheFileWriter() throws IOException{
theFile = new File("Pfad");
theFile.deleteOnExit();
}

public String writeTheFile(String content) {
try {
fileWriter = new FileWriter(theFile , true); //true, um Text an die Datei anhängen zu können
//ohne true wird der gesamte Inhalt ersetzt.
fileWriter.write(content);
fileWriter.close();
} catch (IOException ex) {
Logger.getLogger(TheFileWriter.class.getName()).log(Level.SEVERE, null, ex);
return "Status: Fehler";
}

return "Status: Datei wurde beschrieben.";
}
}
[/Java]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Text in JTextfield einfügen sofort dann wird Text gekürzt Allgemeine Java-Themen 2
G KeyListener für JTextField Allgemeine Java-Themen 5
J Circumflex in JTextField Allgemeine Java-Themen 1
G JTextField Inhalt in einem Long einfügen Allgemeine Java-Themen 2
J JTextField nicht editierbar Allgemeine Java-Themen 5
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
F JTextField funktioniert nicht Allgemeine Java-Themen 6
B JTextfield Allgemeine Java-Themen 9
E Eingabeprüfung JTextField. Fehler bei Copy-Paste Allgemeine Java-Themen 4
T JTextField in Listener leeren Allgemeine Java-Themen 2
M jTextField --> Zwischenspeicher Allgemeine Java-Themen 20
M Datum einlesen aus jTextField Allgemeine Java-Themen 2
G JTextField mit Zeichenbeschränkung Allgemeine Java-Themen 7
E JTextField auf JWindow Allgemeine Java-Themen 2
P Suche Benis IP/Netzwerkadresse JTExtField Allgemeine Java-Themen 2
S JTable editieren + in JTextField schreiben Allgemeine Java-Themen 7
O Inhalt vom JTextfield im DebugMode ermitteln? Allgemeine Java-Themen 2
M Autovervollständigung im JTextField Allgemeine Java-Themen 3
P JTextField textfarbe schwarz auch wenn JTF deaktiviert ist Allgemeine Java-Themen 4
MQue JTextField Kommastellen Allgemeine Java-Themen 5
G Problem mit jTextField Allgemeine Java-Themen 7
D JTextfield für double werte Allgemeine Java-Themen 2
F JTextField Eingabe automatisch bestaetigen Allgemeine Java-Themen 17
D Probleme beim FAQ (JTextField: Dokumentarten) Allgemeine Java-Themen 5
H Position von JTextField Allgemeine Java-Themen 2
O String übergeben ist name eines JTextField wie zugreifen Allgemeine Java-Themen 9
Z JTextField mit Model kommunizieren Allgemeine Java-Themen 6
G Fragen zu JTextField bzw. JTextArea Allgemeine Java-Themen 2
G JTextField: Feld für Ausgabe von Meldungen Allgemeine Java-Themen 14
G Frage zu JTextField Allgemeine Java-Themen 2
E Field-Objekt in JTextField parsen Allgemeine Java-Themen 3
F KeyListener für JTextField Allgemeine Java-Themen 4
G Nur Integer Werte in JTextField Allgemeine Java-Themen 4
H JTextField Allgemeine Java-Themen 2
C JTextField Allgemeine Java-Themen 9
B TextListener bei JTextField Allgemeine Java-Themen 6
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
kodela Klassen Klassenvariable wird nicht gesetzt Allgemeine Java-Themen 23
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
kodela Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt Allgemeine Java-Themen 5
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Java wird nicht gefunden Allgemeine Java-Themen 32
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
B Abfragenteil wird nicht aufgerufen Allgemeine Java-Themen 2
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben