FileWriter仅在没有GUI的情况下工作

时间:2016-12-12 20:28:51

标签: java user-interface jframe

我想创建一个登录窗口,将用户名和密码保存在程序运行时创建的文件中:主要问题是当我从控制台运行java程序时,程序可以运行(这里是代码的一部分): / p>

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

但是当我运行这段代码时,它并没有

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

为什么会这样?

1 个答案:

答案 0 :(得分:2)

而不是:

if(button.isSelected())

ActionListener添加JButton

isSelected()方法返回按钮的状态。 True如果选中了切换按钮,false如果不是。

这不是您需要的,因为您只想将按钮单击与动作相关联,而不使用切换按钮。

请尝试使用此代码:

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

    }
});