gpt4 book ai didi

java - 检查现有文本时自定义控制台 nullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:18:22 25 4
gpt4 key购买 nike

我已经为程序创建了一个自定义控制台。我有一个方法,可以向名为 toConsole 的控制台添加一条消息,该方法要求提供检查的字符串并将时间添加到字符串中。然后它转到我的函数 addConsole,该函数检查现有文本是否存在,如果存在,则会将预先存在的文本添加到新文本中,否则它只是将新文本放入。所以这是错误。我还可以指出,如果我在控制台输入文本框中手动输入文本,则不会产生此错误。

Exception in thread "main" java.lang.NullPointerException
at com.michael.tech.api.console.RunConsole.addConsole(RunConsole.java:188)
at com.michael.tech.api.console.RunConsole.toConsole(RunConsole.java:204)
at com.michael.tech.api.console.RunConsole.toConsole(RunConsole.java:223)
at com.michael.tech.api.testerFile.main(testerFile.java:25)

这是 addConsole 方法

private static void addConsole(String s){
console.setText( ( console.getText().isEmpty()) ? s : (console.getText() + "\n" + s) );
}

toConsole 方法

public static void toConsole(String s, boolean timeStamp, boolean classPath, String className){
if(s.startsWith("/")){
doCommand(s);
return;
}
Time t = new Time();
t.getSYSPrint();
String time = "[" + t.toMilitary() + "] ";
if(EchoTime || timeStamp){
addConsole(time + s);
}
else if(classPath){
addConsole(className);
}
else{
addConsole(s);
}
}

最后是 testerFile 类中的 Main 方法

public static void main(String[] args) {            
RunConsole.startConsole();
RunConsole.toConsole("test");
}

预先感谢您的帮助。我认为这是我忽略的一些小错误(我也希望如此)。

编辑:粘贴 bin 以查看行号

运行控制台类 http://pastebin.com/2yUAwQc5

testerFile类 http://pastebin.com/R5ViLekp

最佳答案

问题是 JTextArea console 仍然具有默认的 null 值,因为它尚未实例化。这是因为没有创建 RunConsole实例 - 相反,您以静态方式访问此类的方法:

RunConsole.startConsole();
RunConsole.toConsole("test");

使用静态方法是糟糕的设计,尤其是因为您的应用程序需要具有状态。在 RunConsole 实例方法中创建所有 static 方法,并将以上行替换为:

RunConsole runConsole = new RunConsole();
runConsole.startConsole();
runConsole.toConsole("test");

此外,当您执行此操作时,请不要忘记删除在 startConsole 中创建的实例,否则您将看不到来自 toConsole 的初始消息。变化:

new RunConsole().setVisible(true);

setVisible(true);

关于java - 检查现有文本时自定义控制台 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14616596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com