java JOptionPane取消按钮和获取输入
我试图让用户在那里输入名称,如果它留空,它会再次询问,如果他们填写它,它会设置一个JLabel
或点击取消退出
我的最后一个if语句是错误的,它不像nameEnt
public Player() {
//setBackground(Color.green);
setSize(600, 400);
name = new JLabel();//Input hint
JOptionPane nameOption = new JOptionPane();
String nameEnt = nameOption.showInputDialog("First Name: ");
if (!nameEnt.matches("[a-zA-Z]+")) {
name.setText(nameEnt);
}
if (nameEnt.length() == 0) {
//if this condition is true JOption stays until name is entered or canceled
}
if (nameEnt == nameOption.CANCEL_OPTION) {
System.exit(0);
}
}
# 1 楼答案
JOptionPane.CANCEL_OPTION
是一个静态int字段,不能将String
与int
与==
进行比较良好实践
如果您想一次性使用确定和取消按钮
JOptionPane.showConfirmDialog
和JOptionPane.showInputDialog()
,但这是不可能的,我建议您改为使用以下按钮:# 2 楼答案
根据JOptionPane API,如果用户取消对话框,则返回
null
所以正确的解决方案是不使用equals,而是先检查返回值是否为null,然后再检查其长度
但是为什么要用这种方式创建JOptionPane呢?最好使用静态的创建方法
或者像这样,如果你试图循环获取输入: