사용자가 다른 부분에 액세스 할 수있는 프로그램을 만들려고합니다. 이 설정을 통해 사용자의 2 암호가 일치하지 않으면 정보를 다시 입력해야합니다. 또한 사용자가 아무 것도 입력하지 않으면 모든 정보를 다시 입력해야합니다. 어떻게해야 사용자가 좋은 정보를 입력 할 때까지 계속 반복 할 수 있습니까?좋은 입력이 될 때까지 루프를 계속 하시겠습니까?
if (e.getSource() == okButton) {
if(!passString.equals(passStringConfirm) || userName.equals(null) || passString.equals(null) || passStringConfirm.equals(null)){
enterUsername.setText("");
enterPassword.setText("");
enterConfirmPassword.setText("");
}
}
이것은 내가 지금까지 가지고있는 것이며, 하나의 반복에만 적용됩니다. 나는 잠시 동안 노력했다. 그리고 JOptionPane에서 인쇄하려고하는 경고 메시지를 계속해서 출력했다.
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.Border;
public class CreateAccount extends JFrame implements ActionListener {
JLabel username = new JLabel("Enter your username");
JTextField enterUsername = new JTextField(null, 15);
JLabel password = new JLabel("Enter your password");
JPasswordField enterPassword = new JPasswordField(null, 15);
JLabel passwordConfirm = new JLabel("Confirm your password.");
JPasswordField enterConfirmPassword = new JPasswordField(null, 15);
JButton okButton = new JButton("OK");
String userName;
double initialDeposit;
public CreateAccount() {
add(username);
add(enterUsername);
add(password);
add(enterPassword);
add(passwordConfirm);
add(enterConfirmPassword);
add(okButton);
okButton.addActionListener(this);
setTitle("New Bank Account Creation");
setVisible(true);
setLocationRelativeTo(null);
setSize(270, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
}
@Override
public void actionPerformed(ActionEvent e) {
char[] pass = enterPassword.getPassword();
String passString = new String(pass);
char[] passConfirm = enterConfirmPassword.getPassword();
String passStringConfirm = new String(passConfirm);
userName = enterUsername.getText();
if (e.getSource() == okButton) {
if(userName == null || userName.isEmpty() || passString == null || passString.isEmpty() || !passString.equals(passStringConfirm)) {
enterUsername.setText("");
enterPassword.setText("");
enterConfirmPassword.setText("");
Border redLine = BorderFactory.createLineBorder(Color.red);
enterUsername.setBorder(redLine);
enterPassword.setBorder(redLine);
enterConfirmPassword.setBorder(redLine);
repaint();
}
}
super.dispose();
int response = 0;
String firstDesposit = JOptionPane.showInputDialog("Welcome " + userName + ". Enter your initial deposit.");
initialDeposit = Double.parseDouble(firstDesposit);
if (response == JOptionPane.OK_OPTION) {
new Menu();
}
}
}
버튼을 클릭하면? 그러면 UI가 잠길 것입니다. 또한 ** nothing **'.equals (null)'입니다. 만약'null'이라면'equals' 메소드를 호출했을 때'NullPointerException'을 얻을 것입니다. –
루프가 어디에 있습니까? – redFIVE
루프를 구현하는 데 도움이 필요합니다. 나는 사용자의 오류를 말하는 JOptionPane 메시지로 do를 시도했지만, 창을 닫을 때 계속 인쇄 할 것이다. JOptionPane 경고를 한 번만 인쇄하면서이 루프 기능을 만들 수 있습니까? – AlecR