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



所以我写了以下代码:

 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 test = new GuiTest();.由于您没有使用test对象。

最新更新