Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileWriter仅在没有GUI的情况下工作_Java_User Interface_Jframe - Fatal编程技术网

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

Java FileWriter仅在没有GUI的情况下工作,java,user-interface,jframe,Java,User Interface,Jframe,我想创建一个登录窗口,将用户名和密码保存在程序运行时创建的文件中:主要问题是,当我从控制台运行java时,程序工作(这里是部分代码): 但当我运行这段代码时,它不会 import java.util.*; import java.io.*; import java.awt.*; import javax.swing.*; public class LogIn extends JFrame { private JLabel label; private JLabel label

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

但当我运行这段代码时,它不会

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);
    }   
}
为什么会发生这种情况?

而不是:

if(button.isSelected())
ActionListener
添加到
JButton

isSelected()
方法返回按钮的状态<代码>真如果选择了切换按钮,如果未选择则为假

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

请尝试以下代码:

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

    }
});

“但是当我运行此代码时,它不工作。”你怎么知道?程序本身工作,但它不创建.txt文件
新文件(“data.txt”)
引用运行程序时当前目录中的任何文件。尝试使用绝对路径,如
新文件(System.getProperty(“user.home”),“data.text”)
。我知道这一点,我也尝试了你的代码,但它仍然不起作用,我得到的只是GUI,其他什么都没有
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();
          }
        }

    }
});