如何从用作提示的JOptionPane返回到JFrame主窗口?

雅克

这里是一名业余Java程序员。这是我仍在处理的代码。我的计划是使用JOptionPane来显示输入的密码是否正确以及尝试的次数。我的问题是,尝试输入的次数不会改变,如果输入正确的密码,循环就会继续,而不是我打算终止的计划。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Password extends JFrame {
private static final int WIDTH = 300;
private static final int HEIGHT = 165;
private static final int tries = 3;

private JLabel passwordLabel;
private JTextField passwordTF;

private JButton okB , cancelB;

private OkButtonHandler obHandler;
private CancelButtonHandler cbHandler;

public Password () {
    passwordLabel = new JLabel ("Input password: " , SwingConstants.LEFT);

    passwordTF = new JTextField (25);

    okB = new JButton ("OK");
    obHandler = new OkButtonHandler();
    okB.addActionListener(obHandler);

    cancelB = new JButton("Cancel");
    cbHandler = new CancelButtonHandler();
    cancelB.addActionListener(cbHandler);

    Container pane = getContentPane();
    pane.setLayout(null);

    pane.add(passwordLabel);
    pane.add(passwordTF);
    pane.add(okB);
    pane.add(cancelB);

    passwordLabel.setBounds(100 , 0 , 100 , 50);
    passwordTF.setBounds(5 , 40 , 275 , 30);
    okB.setBounds(35 , 75 , 100 , 40);
    cancelB.setBounds(150 , 75 , 100 , 40);

    setTitle("Password");
    setSize(WIDTH , HEIGHT);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
}
private class OkButtonHandler implements ActionListener {
    public void actionPerformed (ActionEvent e) {
        String prompt = passwordTF.getText();

        for (int x = 1 ; x<=3 ; x++) {
            if (x==1) {
                if (prompt.equals("Computer")) {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access granted" , "Password" , JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
                else {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access denied: "+(tries-1) , "Password" , JOptionPane.WARNING_MESSAGE);
                    continue;
                }
            }
            else if (x==2) {
                if (prompt.equals("Computer")) {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access granted" , "Password" , JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
                else {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access denied: "+(tries-2) , "Password" , JOptionPane.WARNING_MESSAGE);
                    continue;
                }
            }
            else if (x==3) {
                if (prompt.equals("Computer")) {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access granted" , "Password" , JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
                else {
                    passwordTF.setText("");
                    JOptionPane.showMessageDialog(null , "Access denied: System blocked" , "Password" , JOptionPane.WARNING_MESSAGE);
                    continue;
                }
            }
        }
    }
}
private class CancelButtonHandler implements  ActionListener {
    public void actionPerformed (ActionEvent e) {
        System.exit(0);
    }
}
public static void main (String[] args) {
    Password password = new Password ();
}       

}

马特·温斯坦利(Matt Winstanley)

在这方面,无需使用for循环,方法是使用

continue;

它将继续通过for循环并依次打印每个错误消息。

每次按下“确定”按钮时调用actionListener时,请尝试如下操作:

private class OkButtonHandler implements ActionListener {
public void actionPerformed (ActionEvent e) {
    String prompt = passwordTF.getText();
            if (prompt.equals("Computer")) {
                passwordTF.setText("");
                JOptionPane.showMessageDialog(null , "Access granted" , "Password" , JOptionPane.INFORMATION_MESSAGE);
            }
            else {
                tries--;
                if (tries != 0){
                passwordTF.setText("");
                JOptionPane.showMessageDialog(null , "Access denied: "+(tries) , "Password" , JOptionPane.WARNING_MESSAGE);
                }
                 else {
                     passwordTF.setText("");
                     JOptionPane.showMessageDialog(null , "Access denied: System blocked" , "Password" , JOptionPane.WARNING_MESSAGE);
                     System.exit(0);
                 }
            }
        }
}

如果您输入了3次错误的密码,此操作也将完成您需要的所有操作,然后关闭主机。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从JOptionPane返回JFrame

来自分类Dev

从跳转返回到主

来自分类Dev

创建一个模式窗口,该窗口将值返回到主窗体

来自分类Dev

如何从WPF页面返回主窗口?

来自分类Dev

“ less”如何切换到文本,然后返回到提示?

来自分类Dev

“ less”如何切换到文本,然后返回到提示?

来自分类Dev

JFrame:如何在单击按钮时隐藏主窗口?

来自分类Dev

运行时将新窗口添加到MATLAB GUI的OpeningFcn会返回到主窗口的后面

来自分类Dev

JOptionPane 或 JFrame 从 JCalendar 返回值

来自分类Dev

调用模态窗口并返回到原始窗口

来自分类Dev

在Qt中关闭主窗口后,如何返回信息?

来自分类Dev

从imageview返回到主屏幕android studio

来自分类Dev

安卓如何在按返回键回到主屏幕后关闭gps图标?

来自分类Dev

如何将精灵从方法返回到主然后绘制它?

来自分类Dev

卸载Ubuntu后如何确保分区返回到主操作系统

来自分类Dev

如何将精灵从方法返回到主然后绘制它?

来自分类Dev

如何将对话框片段值从对话框返回到主活动?

来自分类Dev

WPF主窗口不返回

来自分类Dev

如何使Alt + Tab返回到与上次使用相同的应用程序窗口(Unity)

来自分类Dev

如何在不丢失程序的情况下返回到窗口10的生产版本

来自分类Dev

SetFocus到父窗口,然后返回到子窗口

来自分类Dev

如何返回到Nouveau司机?

来自分类Dev

如何在Windows中禁用命令提示符中的滚动并返回到写入模式

来自分类Dev

Android-如何打开推送通知深层链接意图,该意图在关闭时将返回到主屏幕?

来自分类Dev

如何将字符串从子窗体返回到主窗体(不打开任何新窗体)?

来自分类Dev

React Navigation 5嵌套屏幕无法返回到主屏幕

来自分类Dev

Java Swing:内部JFrame类在关闭时关闭主窗口

来自分类Dev

如何关闭viber主窗口

来自分类Dev

如何防止主窗口关闭

Related 相关文章

  1. 1

    从JOptionPane返回JFrame

  2. 2

    从跳转返回到主

  3. 3

    创建一个模式窗口,该窗口将值返回到主窗体

  4. 4

    如何从WPF页面返回主窗口?

  5. 5

    “ less”如何切换到文本,然后返回到提示?

  6. 6

    “ less”如何切换到文本,然后返回到提示?

  7. 7

    JFrame:如何在单击按钮时隐藏主窗口?

  8. 8

    运行时将新窗口添加到MATLAB GUI的OpeningFcn会返回到主窗口的后面

  9. 9

    JOptionPane 或 JFrame 从 JCalendar 返回值

  10. 10

    调用模态窗口并返回到原始窗口

  11. 11

    在Qt中关闭主窗口后,如何返回信息?

  12. 12

    从imageview返回到主屏幕android studio

  13. 13

    安卓如何在按返回键回到主屏幕后关闭gps图标?

  14. 14

    如何将精灵从方法返回到主然后绘制它?

  15. 15

    卸载Ubuntu后如何确保分区返回到主操作系统

  16. 16

    如何将精灵从方法返回到主然后绘制它?

  17. 17

    如何将对话框片段值从对话框返回到主活动?

  18. 18

    WPF主窗口不返回

  19. 19

    如何使Alt + Tab返回到与上次使用相同的应用程序窗口(Unity)

  20. 20

    如何在不丢失程序的情况下返回到窗口10的生产版本

  21. 21

    SetFocus到父窗口,然后返回到子窗口

  22. 22

    如何返回到Nouveau司机?

  23. 23

    如何在Windows中禁用命令提示符中的滚动并返回到写入模式

  24. 24

    Android-如何打开推送通知深层链接意图,该意图在关闭时将返回到主屏幕?

  25. 25

    如何将字符串从子窗体返回到主窗体(不打开任何新窗体)?

  26. 26

    React Navigation 5嵌套屏幕无法返回到主屏幕

  27. 27

    Java Swing:内部JFrame类在关闭时关闭主窗口

  28. 28

    如何关闭viber主窗口

  29. 29

    如何防止主窗口关闭

热门标签

归档