2015-06-11 3 views
1

Im пытается создать чат-программу. я могу сделать это, когда я использую пакет java awt, но с java fx я, кажется, немного смущен. когда вы впервые создали все ваши методы, даже там есть public static void main(string args[]), и есть место, где вы начинаете primaryStage кодирования ... У меня нет проблем с кодированием визуальной стороны моей программы, просто я не знаю, где я должен настраивать Network часть моей программы и где поставить его, когда им сделано ..JavaFX chat Приложение

**CODE: This is Just a View** 

Server extends Application{

public void start(Stage primaryStage){ 
//Where you setup the visual of your program 
} 

public static void main(String args[]){ 
launch(args); // Where the program will run 
} 

public void ServerConnection(){ 
//where i put the codes to setup my streams and SOCKET 
} 

метод ServerConnection содержит другие methods а Но все из них будут идти к ServerConnectionMethod теперь моя вопрос: прежде чем будет поместить мой метод ServerConnection так, что он будет работать вместе с моим primary Stage

Извините за длинный post..have String ="potato";

+0

думать о 'заводится (...)' метод в приложении JavaFX как эквивалент метода 'main (...)' в «традиционном» Java-приложении; основные отличия заключаются в том, что метод 'start (...)' выполняется в потоке пользовательского интерфейса и получает экземпляр «Stage» в качестве удобства. –

ответ

0

Если приложение JavaFX правильно запущен, он не будет использовать main() метод - вы можете временно удалить его (как эксперимент) и проверить, но, скорее всего, он не служит никакой цели, кроме обратной совместимости. Вы, конечно, должны не полагаться на главный метод, делающий что-нибудь особенное в случае приложения FX; он должен только звонить launch() и ничего больше.

Вместо этого ваш основной класс должен расширять Application, а среда выполнения JavaFX создаст для него экземпляр для вас, создаст первичный этап и вызовет метод start, предоставив вам ссылку на этот этап. Из этого метода вы можете делать все, что захотите, но имейте в виду, что он находится в потоке пользовательского интерфейса (так что вы должны создать дополнительный поток для любой задачи, выполняемой в течение длительного времени, так же, как и в любом другом наборе инструментов, таком как Swing.)

+0

, так мне нужно создать еще один класс, который запускает главный, а другой для приложения fx? –

+0

@ IvanLorenzo Совсем нет, просто оставите основной метод в своем FX-классе именно так, как есть. – berry120

0

Вы можете запустить этот метод setupConnection в начале запуска (Stage primaryStage). Таким образом, он будет выполнен до показа сцены. Вы также можете запустить оба метода из основного метода, но, как сказал berry120: вам не нужно вызывать метод запуска (args) в основном, если он расширяет приложение, вы в порядке с помощью только метода start.

Когда вы закончите, вы можете использовать

stage.setOnCloseRequest(e -> { 
//code to execute, something like socket.close(); 
}); 

И вы могли бы изменить stage.show() к stage.showAndWait()

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