JavaFX-使用来自不同类的对象参数启动应用程序

时间:2019-02-25 22:55:30

标签: java javafx

我正在使用JavaFX创建与ServerInterface类进行交互的GUI。 JavaFX类称为ServerWindow,它将由另一个名为Launcher的类启动,我可以编辑但必须使用它。我正在尝试将ServerInterface对象附加到ServerWindow,但是尝试时会出错。
首先,我尝试将其作为参数传递,但是JavaFX不喜欢在调用Application.launch(...)时通过它传递的字符串参数以外的参数。
接下来,我尝试了这个:

ServerWindow s = new ServerWindow();
s.addServer(new MockServer());
s.launch(s.getClass(), "");

这似乎两次调用了ServerWindow类,第二次是附加了服务器的类。无论如何,要在传递参数的同时使程序启动?

编辑-添加示例:

class GUI extends Application{
    private ServerInstance server;
    public GUI(ServerInstance s){ 
        this.server = s
    }
    public static void Start(){
        System.out.println(this.server.getServerName());
    }

}
class Main {
    public static void main(String[] args){
        DummyServer ds = new DummyServer(); //Implements ServerInterface
        Application.launch(GUI.class, ds)

    }

}

1 个答案:

答案 0 :(得分:1)

您可以传递课程名称:

Application.launch(GUI.class, DummyServer.class.getName());

然后在您的应用程序中,可以创建对象:

@Override
public void start(Stage stage)
throws ReflectiveOperationException {

    String serverClassName = getParameters().getRaw().get(0);

    Class<? extends ServerInstance> serverClass =
        Class.forName(serverClassName).asSubclass(ServerInstance.class);

    this.server = serverClass.getConstructor().newInstance();
}