# Text in ein Textfeld eingeben und speichern



## JavaAnfängerMarvin (4. Apr 2018)

Hallo, habe einen Code gemacht der ein Fenster erstellt wo man sich einloggen muss. Wenn man sich eingeloggt hat mit den richtigen Passwort dann kommt ein neues Fenster mit Login Succeful .Aber ich weiß nicht wie ich dort ein Textfeld reinbekomme wo  man was reinschreiben kann und speichern kann, was dann beim nächsten mal beim Starten , dass da der selbe Text immer noch ist den man reingeschrieben hat, also quasi eine Notiz die man auch wieder weiterschreiben und verändern kann .

package LoginMarvin;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MarvinEins extends JFrame implements ActionListener {
 Icon x = new ImageIcon(getClass().getResource("HalloHallo.png"));

    Container container = getContentPane();
    JLabel userLabel = new JLabel("USERNAME");
    JLabel passwordLabel = new JLabel("PASSWORD");
    JTextField userTextField = new JTextField();
    JPasswordField passwordField = new JPasswordField();
    JButton loginButton = new JButton("LOGIN");
    JButton resetButton = new JButton("RESET");
    JButton hallo = new JButton("", x);
    JCheckBox showPassword = new JCheckBox("Show Password");

    MarvinEins() {
        setLayoutManager();
        setLocationAndSize();
        addComponentsToContainer();
        addActionEvent();
    }
    public void setLayoutManager() {
        container.setLayout(null);
    }
    public void setLocationAndSize() {
        userLabel.setBounds(50, 150, 100, 30);
        passwordLabel.setBounds(50, 220, 100, 30);
        userTextField.setBounds(150, 150, 150, 30);
        passwordField.setBounds(150, 220, 150, 30);
        showPassword.setBounds(150, 250, 150, 30);
        loginButton.setBounds(50, 300, 100, 30);
        resetButton.setBounds(200, 300, 100, 30);
        hallo.setBounds(20, 350, 300, 200);

    }
    public void addComponentsToContainer() {
        container.add(userLabel);
        container.add(passwordLabel);
        container.add(userTextField);
        container.add(passwordField);
        container.add(showPassword);
        container.add(loginButton);
        container.add(resetButton);
        container.add(hallo);

    }
    public void addActionEvent() {
        loginButton.addActionListener(this);
        resetButton.addActionListener(this);
        showPassword.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //Coding Part of LOGIN button
        if (e.getSource() == loginButton) {
            String userText;
            String pwdText;
            userText = userTextField.getText();
            pwdText = passwordField.getText();
            if (userText.equalsIgnoreCase("Super") && pwdText.equalsIgnoreCase("Hallo")) {
             JOptionPane.showMessageDialog(this, "Login Successful");


            } else {
                JOptionPane.showMessageDialog(this, "Invalid Username or Password");
            }
        }
        //Coding Part of RESET button
        if (e.getSource() == resetButton) {
            userTextField.setText("");
            passwordField.setText("");
        }
       //Coding Part of showPassword JCheckBox
        if (e.getSource() == showPassword) {
            if (showPassword.isSelected()) {
                passwordField.setEchoChar((char) 0);
            } else {
                passwordField.setEchoChar('*');
            }

        }
    }
}





nächste Klasse :




package LoginMarvin;
import javax.swing.JFrame;
public class MarvinZwei {
    public static void main(String[] a) {
        MarvinEins frame = new MarvinEins();
        frame.setTitle("Login Form");
        frame.setVisible(true);
        frame.setBounds(10, 10, 370, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);


    }

}


----------



## Robat (4. Apr 2018)

Ohne deinen Code angeschaut zu haben.. (BTW: Bitte Code immer in Code-Tags .. Einfügen-Button (4. Button von Rechts) im Editor oder übere Code-Tags (siehe meine Signatur)).

Prinzipiell musst du den Text aus dem Textfeld irgendwo speichern - am einfachsten sicherlich erstmal in einer Textdatei.
Beim start deines Programms musst du dann immer den Text aus der Textdatei laden und in das Textfeld packen.


----------



## JavaAnfängerMarvin (4. Apr 2018)

Ich will den Text aber nicht auf meinen PC speichern sonder in diesen Programm


----------



## Robat (4. Apr 2018)

Und wie stellst du dir das vor?
Wenn du die Daten nicht auf deinem PC haben willst dann musst du die Daten wohl auf nem Server speichern.


----------



## JavaAnfängerMarvin (4. Apr 2018)

Naja das das halt in diesen Textfeld bleibt.
Ich will das Programm irgendwann zum Download anbieten. Und dann hat halt keiner diese Textdatei


----------



## JavaAnfängerMarvin (4. Apr 2018)

Aber danke schonmal das du mir hilfst


----------



## JavaAnfängerMarvin (4. Apr 2018)

Wie hier zum Beispiel und wenn man auf den ok Knopf drückt wird der Text gespeichert

```
import java.awt.Color;
import javax.swing.*;
public class JTextFieldBeispiel {
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("JTextFieldBeispiel");
        meinJFrame.setSize(300, 150);
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Ihr Name");
        panel.add(label);
        // Textfeld wird erstellt
        // Text und Spaltenanzahl werden dabei direkt gesetzt
        JTextField tfName = new JTextField("Paul Programmierer", 15);
        // Schriftfarbe wird gesetzt
        tfName.setForeground(Color.BLUE);
        // Hintergrundfarbe wird gesetzt
        tfName.setBackground(Color.YELLOW);
        // Textfeld wird unserem Panel hinzugefügt
        panel.add(tfName);
        JButton buttonOK = new JButton("OK");
        panel.add(buttonOK);
        meinJFrame.add(panel);
        meinJFrame.setVisible(true);
```


----------



## Robat (4. Apr 2018)

JavaAnfängerMarvin hat gesagt.:


> Und dann hat halt keiner diese Textdatei


Dann liefer sie mit deinem Programm aus. Ist doch alles möglich.


----------



## JavaAnfängerMarvin (4. Apr 2018)

ok wie geht das?


----------



## JavaAnfängerMarvin (4. Apr 2018)

Aber dieses Textfeld muss halt durch dieses Login gesichert sein


----------



## JavaAnfängerMarvin (4. Apr 2018)

Ich möchte aber das das alles in einer Jar Datei bleibt und das man nur eine Jar Datei runterladen muss


----------



## Robat (4. Apr 2018)

Da gibt es doch genug Beispiel im Netz.
Die ersten Treffer unter "java include file to jar" sollten genug Beispiele liefern.


----------



## JavaAnfängerMarvin (4. Apr 2018)

Ja aber wie schaffe ich das dieseer text in diesen Textfeld bleibt?


----------



## Robat (4. Apr 2018)

Hab ich weiter oben bereits beschrieben.
Beim Programmstart musst du dann die Datei auslesen und den Inhalt der Datei in das Textfeld schreiben.


----------



## JavaAnfängerMarvin (4. Apr 2018)

Ich versteh und kann das net


----------



## Robat (5. Apr 2018)

Dann geh eine Stufe zurück und nimm dir ein Grundlagenbuch. Schau dir an wie man aus Dateien liest und wie man in Dateien schreibt.

Die Logik ist recht Simple (stark abstrahiert) 

```
Programm starten
Login
Datei einlesen
Textfeld erstellen und Inhalt aus Datei reinschreiben.
Textfeld anzeigen
Vor Programmende Inhalt aus Textfeld in Datei schreiben
```


----------



## JavaAnfängerMarvin (5. Apr 2018)

Ja aber es klappt nicht das der Text gespeichert wird und beim nächsten mal wenn ich das Programm öffne das der Text immernoch da steht


----------



## Robat (5. Apr 2018)

Wie sieht denn dein Code dazu aus?


----------



## JavaAnfängerMarvin (5. Apr 2018)

```
import java.awt.Color;
import javax.swing.*;
public class JTextFieldBeispiel {
    public static void main(String[] args) {
        JFrame meinJFrame = new JFrame();
        meinJFrame.setTitle("JTextFieldBeispiel");
        meinJFrame.setSize(300, 150);
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Ihr Name");
        panel.add(label);
        // Textfeld wird erstellt
        // Text und Spaltenanzahl werden dabei direkt gesetzt
        JTextField tfName = new JTextField("Hallo", 15);
        // Schriftfarbe wird gesetzt
        tfName.setForeground(Color.BLUE);
        // Hintergrundfarbe wird gesetzt
        tfName.setBackground(Color.YELLOW);
        // Textfeld wird unserem Panel hinzugefügt
        panel.add(tfName);
        JButton buttonOK = new JButton("OK");
        panel.add(buttonOK);
        meinJFrame.add(panel);
        meinJFrame.setVisible(true);
```


----------



## Robat (5. Apr 2018)

Und wo ist der Part wo du die Datei ein - bzw ausliest?


----------



## VfL_Freak (5. Apr 2018)

Moin,
hier mal ein paar Links zum Lesen und Schreiben von Dateien - vlt. hilfts ja weiter 

Schreiben:
https://javabeginners.de/Dateien_und_Verzeichnisse/In_Textdatei_schreiben.php
http://www.javaschubla.de/2007/javaerst0260.html

Auslesen:
https://javabeginners.de/Ein-_und_Ausgabe/Eine_Datei_zeilenweise_auslesen.php
http://www.javaschubla.de/2007/javaerst0250.html

VG Klaus


----------



## JavaAnfängerMarvin (5. Apr 2018)

Vielen dank, sowas brauche ich  Ich hatte kein Plan wie sowas geht


----------



## VfL_Freak (5. Apr 2018)

JavaAnfängerMarvin hat gesagt.:


> Ich hatte kein Plan wie sowas geht


Im Zweifel ist Google Dein Freund


----------



## JavaAnfängerMarvin (5. Apr 2018)

thx, aber wie schaffe ich das das dieser Text gespeichert wird? beim Neustart ist immer alles weg


----------



## VfL_Freak (5. Apr 2018)

OMG  hat Dir @Robat doch schon oben in #16 erklärt ...

Hier noch allgemein beschrieben
Programm starten
Login
*Daten aus Datei einlesen*
Textfeld erstellen und Inhalt aus Datei reinschreiben
Textfeld anzeigen
_Vor Programmende_: *Inhalt aus Textfeld in die Datei schreiben*

Du hast mit der Eingabe im Textfeld nur 'flüchtige Daten', d. h. sie existieren nur zur Programmlaufzeit im Hauptspeicher !!
Das Auslesen und Schreiben der Datei muss Du schon selbst basteln (siehe hierzu meine Links in #21) ... das fällt nun mal nicht vom Himmel !!

VG Klaus


----------



## Robat (5. Apr 2018)

Gefühlt redet man hier gegen eine Wand. 
Wenn man weder liest was geschrieben wird  noch die Lust hat selber zu googeln bin ich raus ..


----------



## VfL_Freak (5. Apr 2018)

Robat hat gesagt.:


> Gefühlt redet man hier gegen eine Wand


ja, den Eindruck bekomme ich auch so langsam ....


----------



## Java xyrse123 (6. Apr 2018)

Ich habe dasselbe Problem mit einer Text Datei in einem Programm.
Ich habe in dem Package ein neuen Ordner mit einer Textdatei abc.txt erstellt und möchte in diese Datei schreiben, aber in die  Textdatei wird nicht geschrieben. So kommt keine Fehlermeldung, aber wenn  ich
	
	
	
	





```
new FileWriter("/abc.txt")
```
schreibe kommt folgende Exception java.io.FileNotFoundException: \abc.txt (Zugriff verweigert). Kann man dann überhaupt in die Datei schreiben? 


```
public static void main(String[] args) throws IOException {
      
       
        try { 
            PrintWriter  pWriter = new PrintWriter(new BufferedWriter(new FileWriter("abc.txt"))); // keine Fehlermeldung
            pWriter.println("Hallo Welt!"); 
   
        } catch (IOException ioe) { 
            ioe.printStackTrace(); 
        }    
    }
```


----------

