2016-09-28 5 views
2

Я работал с JavaFX, потому что мне пришлось программировать «интерактивную оболочку». Я уже запрограммировал оболочку класса, которая подключается к удаленному хосту через SSH.JavaFX - Добавление дополнительных начальных параметров

Но Shell имеет три параметра в его конструкторе:

public Shell(String username, String password, String host) { 

    this.username = username; 
    this.password = password; 
    this.host  = host; 
} 

И что мне нужно (или был бы идеальным):

@Override 
public void start(Stage primaryStage,String username, String password, String host) { 
    this.primaryStage = primaryStage; 
    this.shell = new Shell(username,password,host); 
    initialiseOverview(); 
} 

Есть ли способ, которым я мог бы добавить дополнительный/факультативные начиная с параметра Метод запуска JavaFX. Или есть ли другой способ, как я мог бы справиться с этой проблемой?

Спасибо заранее :)

+0

В чем проблема? Почему ты не можешь этого сделать? Просто не забудьте также вызвать ваш 'super.start (primaryStage)', чтобы дополнительно вызвать метод, который вы переопределяете. –

+0

Я уже пробовал это, но похоже, что метод запуска JavaFX позволяет только один этап в качестве параметра. Ошибка, которую я получил: Тип ShellBoard должен реализовать унаследованный абстрактный метод Application.start (Stage) @MattClark – KingAnjrey

+0

'start()' является в основном первым методом в вашем приложении JavaFX, которое выполняется. Он автоматически вызывается процессом запуска (т. Е. Вы никогда не называете его сами). Где вы ожидаете получить значения для 'username',' password' и 'host'? –

ответ

3

Вы можете получить доступ к параметрам командной строки с Application.getParameters():

@Override 
public void start(Stage primaryStage) { 
    this.primaryStage = primaryStage; 
    Application.Parameters parameters = getParameters(); 
    List<String> rawParams = parameters.getRaw(); 
    String userName = rawParams.get(0); 
    String password = rawParams.get(1); 
    String host = rawParams.get(2); 
    this.shell = new Shell(username,password,host); 
    initialiseOverview(); 
} 

Этот код предполагает, есть (по крайней мере) три параметра командной строки. Вероятно, вы хотите добавить проверки количества параметров и показать сообщение об ошибке или запрос, если они отсутствуют, и т. Д.

+0

Большое вам спасибо. Это решит мою проблему. :) @James_D – KingAnjrey

Смежные вопросы