【发布时间】:2017-11-22 17:33:37
【问题描述】:
我正在做一个学校项目,我正在开发一种游戏。在这个游戏中,我需要用户登录,我遇到了一些困难。
这是我的代码的相关部分:
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class User{
int rank;
String name;
String pass;
User(){
Scanner s = new Scanner(System.in);
System.out.println(" Login\n1.New user\n2.Old user");
int in = s.nextInt();
for(;;){
if(in == 1){
//create new user
}else if(in == 2){
JFrame loginFrame = new JFrame();
loginFrame.setVisible(true);
loginFrame.setLayout(null);
loginFrame.setSize(120+14,180+35);
JLabel enterName = new JLabel("Enter Username:");
enterName.setBounds(10,10,100,20);
JTextField nameField = new JTextField();
nameField.setBounds(120,10,130,20);
JLabel enterPass = new JLabel("Enter Password:");
enterPass.setBounds(10,40,100,20);
JPasswordField passField = new JPasswordField();
passField.setBounds(120,40,130,20);
JButton hitEnter = new JButton("Login");
hitEnter.setBounds(10,70,250,20);
loginFrame.add(enterName);
loginFrame.add(nameField);
loginFrame.add(enterPass);
loginFrame.add(passField);
loginFrame.add(hitEnter);
loginFrame.setSize(270+14,100+36);
hitEnter.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent enter){
name = nameField.getText();
pass = new String(passField.getText());
boolean validUser = checkUser(filename,name,pass);
if(validUser){
loginFrame.setVisible(false);
//some how break the for loop from here
}
}
});
}else{
System.out.println("Invalid input.");
}
}
}
如您所见,我需要从 actionlistener 内部以某种方式退出 for 循环,但我不确定是否有任何方法可以做到这一点。
请帮帮我!!! 提前致谢!!!
【问题讨论】:
-
为什么不使用一个while循环来检查登录状态并在成功后退出而不是无限循环?
-
您不应该混合使用事件驱动的 GUI 代码和扫描仪控制台代码。留在其中一个或另一个。
标签: java swing jbutton actionlistener break