当前位置: 首页 > 知识库问答 >
问题:

JavaFX:NullPointerException调用方法时

齐高寒
2023-03-14

我有一个问题,当我从另一个包中的另一个类在Java控制器中调用我的方法loginrorout时。我不能用setText更改标签(fx: id="loginrorMessage")。我得到一个NullPointerExctive作为错误。该方法被调用,但没有找到标签。当我通过我的控制器的一个方法调用这个方法(loginrorout)时,它起作用了。

控制器代码

package gui;


import javafx.fxml.FXML;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;

public class LoginController {

    private ResourceBundle resources;

    private URL location;

    @FXML
    public Label Loginerrormessage;

    //  Aufruf vom Eventbus für alle Fehler für das Login-> Fehlerausgabe als String wird angezeigt
    public void loginerroroutput(String string){   
        System.out.println(string);                  //Console output string
        Loginerrormessage.setText(string);           // Console output null

    }
    public void initialize() {
    }
}

FXML代码

我很确定这是initialize()方法,因为我认为该方法负责后处理过程。

谢谢你的提示和建议。

共有1个答案

扶冠宇
2023-03-14

您应该保存一个任意位置的LoginController对象来调用该对象。

例如:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getClassLoader().getResource("loginController.fxml"));
LoginController loginController = loader.getController();
AnyWhereStorage.setLoginController(loginController);  

然后在任何地方:

AnyWhereStorage.getLoginController.loginerroroutput("Error");
 类似资料:
  • 使用Object::exec来调用对象的方法。参数原型: Variant Object::exec(const char *method_name, Variant args ...); method_name是方法的名称,字符串类型 args参数,args是变长参数,最多可以接受10个参数 如果参数超过10个,请使用更底层的Object::call方法 使用示例 Object redis =

  • super 带块的方法调用 yield 例: foo.bar() foo.bar bar() print "hello world\n" print Class::new 语法: [表达式 `.'] 标识符 [`(' 表达式 ... [`*' [表达式]],[`&' 表达式] `)'] [表达式 `::'] 标识符 [`(' 表达式 ... [`*' [表达式]],[`&' 表达式] `)']

  • 问题内容: 我想我在这里描述的可能有个名字,但我不知道。所以我的第一个问题是要知道这种技术的名称。 这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您发送的查询会超出实际需要。每2-3个字母发送一次请求,或者每100 ms最多发送一次请求就足够了。 因此,一种技术是安排在键入键之后立即执行的查

  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定

  • 有时你可能想推迟调用一个方法;例如,在注册后的一天向新注册的用户发送电子邮件。要做到这一点,只需调用 BackgroundJob.Schedule 方法并传递所需的时间跨度: BackgroundJob.Schedule( () => Console.WriteLine("Hello, world"), TimeSpan.FromDays(1)); Hangfire Server

  • 问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得