Java 弹出两个gui窗口,而不是一个

Java 弹出两个gui窗口,而不是一个,java,eclipse,swing,user-interface,jframe,Java,Eclipse,Swing,User Interface,Jframe,因此,我编写了以下代码: package myProject; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.PrintWriter; import java.util.Scanner; import javax.swing.*; public class GuiT

因此,我编写了以下代码:

 package myProject;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

import javax.swing.*;

public class GuiTest extends JFrame{
/**
 * 
 */
private static final long serialVersionUID = 1L;

JTextField user = new JTextField();
JTextField pass = new JTextField();
JLabel title = new JLabel("Login");
JLabel usernameGui = new JLabel("Username:");
JLabel passwordGui = new JLabel("Password:");
public String userName;
public String passWord;

//Non GUI variables
public String username;
public String password;
File dir = new File("C:\\Users\\User\\Desktop\\account1.txt");
public boolean pressed = false;


public GuiTest(){
    JFrame window = new JFrame("Position");
    //window.setSize(600, 600);
    window.setBounds(500,200,600,600);
    window.setResizable(false);
    window.setVisible(true);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setLayout(null);
    window.add(panel);

    //Labels
    panel.add(title);
    title.setBounds(290, 110, 100, 100);
    panel.add(usernameGui);
    usernameGui.setBounds(150,200,150,30);
    panel.add(passwordGui);
    passwordGui.setBounds(150,240,150,30);

    //Text fields
    panel.add(user);
    user.setBounds(230,240,150,30);
    panel.add(pass);
    pass.setBounds(230,200,150,30);

    //Button
    JButton btn = new JButton("Login");
    btn.setBounds(250, 290, 100, 30);
    panel.add(btn);
    btn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            userName = user.getText();
            passWord = pass.getText();  
            pressed = true;
            System.out.println(passWord+" "+password+" "+userName+" "+username);
            //System.out.println(mn.passWord+" "+mn.password+" "+mn.userName+" "+mn.username);
        }
    });
}
public static void main(String[] args){
    GuiTest test = new GuiTest();
    GuiTest mn = new GuiTest();
    try{

        mn.Write("MyUser", "MyPass");

        Scanner scan = new Scanner(mn.dir);
        String text = scan.nextLine();
        scan.close();
        System.out.println(text);

        String[] sep = text.split(" ");

        mn.username = sep[0];
        mn.password = sep[1];
        System.out.println("User: " + mn.username + " pass: " + mn.password);

    }catch(Exception e){
        System.out.println("Error! File didn't create.");
    }

        Scanner usernameIn = new Scanner(System.in);
        Scanner passwordIn = new Scanner(System.in);
        String userIn = usernameIn.nextLine();
        String passIn = passwordIn.nextLine();

        if(mn.userName.equals(mn.username) && mn.passWord.equals(mn.password)){
            System.out.print("Access Granted");
        }else{
            System.out.println("Access Denied");
            System.out.println(mn.passWord+" "+mn.password+" "+mn.userName+" "+mn.username);
        }

}
public void Write(String user, String pass){
    String userONE = user;
    String passONE = pass;
    try{
    PrintWriter file = new PrintWriter(dir);
    file.print(userONE+" "+passONE);
    file.close();
    }catch(Exception e){
        System.out.println("Error! File didn't create.");
    }
}
}
当我运行它时,会弹出两个窗口(而不是1),我无法测试输入,因为它们都使用了我猜想的变量。有人知道怎么修吗? 提前谢谢

当我运行它时,会弹出两个窗口(而不是1个窗口)

因为您正在创建同一类的两个对象

GuiTest test = new GuiTest();
GuiTest mn = new GuiTest();

只需删除其中一个
GuiTest=new GuiTest()。因为您没有使用
test
对象。

删除行
GuiTest=new GuiTest()时会发生什么?这是由于一个小错误。非常感谢!这很有帮助。