繁体   English   中英

在ActionListener外部编辑JTextPane时发生NullPointerException错误

[英]NullPointerException error when editing JTextPane Outside ActionListener

我正在为POP3命令制作一个gui,但是在initialize()方法之外的GUI中编辑JTextPane时遇到问题

动作监听器的一部分:

       public void actionPerformed(ActionEvent e)
        {
            String Input = Commands.getText();
            verifyUserAndPass();

                    if(Input.substring(0).equals("QUIT")) {
                        System.exit(0);
                    }
                    if(Input.substring(0,4).equals("LIST")) {
                        ListCommand(Input);
                    }
                    if(Input.substring(0,4).equals("STAT")) {
                        ListCommand(Input);
                    }
                    if(Input.substring(0,4).equals("RETR")) {
                        try {
                            RETRCommand(Input);
                        } catch (IOException e1) {
                            e1.printStackTrace();
                        }
                    }
                    if(Input.substring(0,4).equals("DELE")) {
                        Delete(Input);
                    }
                    if(Input.substring(0,4).equals("NOOP")) {
                        Display.setText("+OK");
                    }
                    if(Input.substring(0,4).equals("UIDL")) {
                        if(userEntered == true && passEntered == true) {
                        Display.setText("the UIDL is"+String.valueOf(ui));
                        ui++;
                        }else {
                            Display.setText("Please sign in first");
                        }
                    }
                    if(Input.substring(0,3).equals("TOP")) {
                        try {
                            TOP(Input);
                        } catch (IOException e1) {
                            e1.printStackTrace();
                        }
                    }
                    if(Input.substring(0,4).equals("RSET")) {
                        Delete(Input);

            }

verifyUserAndPass方法:

    public void verifyUserAndPass() {
    String Input = Commands.getText();
    System.out.println(Input+"randomstring");
    if(Input.substring(0, 4).equals("USER")) {                  
        try {
            if(verifyUser(Input.substring(5))) {
                Display.setText("+OK");
                Commands.setText("");
                userEntered = true;
            } else {
                Display.setText("-ERR");
            }
        } catch (IOException e1) {
            e1.printStackTrace();
            Display.setText("-ERR");
        }
    } 
            if(Input.substring(0, 4).equals("PASS")) {
                    try {
                        if(userEntered == true) {
                        if(verifyPass(Input.substring(5))) {
                            Display.setText("+OK");
                            Display.setText("Welcome, you are now logged in");
                            Commands.setText("");  
                            passEntered = true;
                        } else {
                            Display.setText("-ERR");
                        }
                        } else {
                            Display.setText("Please enter USER first");
                        }
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }

            }
    }

命令是一个JTextField,显示是一个JTextPane。 由于某种原因,我可以在ActionListener之外编辑命令,但不能在Display之外编辑。例如,如果有效,则可以在NOOP下编辑Display.setText,但不能通过verifyUserAndPass()方法中的命令进行编辑,但是Commands.setText可以工作。我在做什么错了?

如果不提供更多详细信息,很难回答这个问题,但是我可以列举一个常见问题:

Display可能未初始化,请检查程序的流程,然后查看为什么未初始化。

此外,请大家遵守Java约定。 变量和方法在驼峰中键入。 因此,这些需要更改:

  • String InputString input
  • ListCommand()listCommand()
  • 等等。希望您能明白。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM