我正在使用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)
}
}
答案 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();
}