Quería crear una ventana de inicio de sesión que guarde los nombres de usuario y las contraseñas en un archivo creado mientras el programa se está ejecutando: el problema principal es que cuando ejecuto Java desde la consola, el programa funciona (aquí parte del código):

Scanner in = new Scanner(System.in);
    try {
        String s = " ";
        System.out.print("Password: ");
        s = in.nextLine();
        File newTextFile = new File("data.txt");
        FileWriter data = new FileWriter(newTextFile);
        data.write(s);
        data.close();
        } catch (IOException iox) {
          iox.printStackTrace();
          }
        }

Pero cuando ejecuto este código, no

import java.util.*;
import java.io.*;
import java.awt.*;
import javax.swing.*;

public class LogIn extends JFrame {

    private JLabel label;
    private JLabel label1;
    private JButton button;
    private JTextField text;
    private JTextField text1;

    public LogIn() {
        setLayout(new FlowLayout());

    label = new JLabel("Username");
    add(label);

    text = new JTextField(10);
    add(text);

    label1 = new JLabel("Password");
    add(label1);

    text1 = new JTextField(10);
    add(text1);

    button = new JButton("Log In");
    add(button);

    if(button.isSelected())
        try {
            File newTextFile = new File("data.txt");
            FileWriter data = new FileWriter(newTextFile);
            data.write(text.getText());
            data.write(text1.getText());
            data.close();
            } catch (IOException iox) {
              iox.printStackTrace();
              }
            }

public static void main(String[] args) {
    LogIn gui = new LogIn();
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.setSize(200, 125);
    gui.setTitle("Log In");
    gui.setVisible(true);
    }   
}

¿Por qué está pasando esto?

1
user7024314 12 dic. 2016 a las 23:28
“Pero cuando ejecuto este código no [funciona]” ¿Cómo puedes saberlo?
 – 
VGR
12 dic. 2016 a las 23:32
El programa en sí funciona pero no crea el archivo .txt
 – 
user7024314
12 dic. 2016 a las 23:33
1
new File("data.txt") se refiere a un archivo en cualquier directorio actual cuando ejecuta el programa. Intente usar una ruta absoluta, como new File(System.getProperty("user.home"), "data.text").
 – 
VGR
12 dic. 2016 a las 23:36
Lo sabía, y también probé tu código pero todavía no funciona, todo lo que obtengo es la GUI y nada más.
 – 
user7024314
12 dic. 2016 a las 23:39

1 respuesta

La mejor respuesta

En vez de eso :

if(button.isSelected())

Agregue un ActionListener al JButton.

El método isSelected() devuelve el estado del botón. True si el botón de alternancia está seleccionado, false si no lo está.

No es lo que necesita, ya que solo desea asociar un clic de botón a una acción y no usa un botón de alternancia.

Pruebe más bien este código:

button.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
      try {
          File newTextFile = new File("data.txt");
          FileWriter data = new FileWriter(newTextFile);
          data.write(text.getText());
          data.write(text1.getText());
          data.close();
        } 
          catch (IOException iox) {
             iox.printStackTrace();
          }
        }

    }
});
1
davidxxx 12 dic. 2016 a las 23:37