JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: FXML рдФрд░ рджреГрд╢реНрдп

рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдиреБрд╡рд╛рдж : Vojtech Ruzicka рджреНрд╡рд╛рд░рд╛ FXML рдФрд░ рджреГрд╢реНрдп рд▓реЗрдЦ ред

рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рд╕реАрдирдмреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЬреАрдпреВрдЖрдИ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред

JavaFX рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╕рднреА рдкреЛрд╕реНрдЯ:

  1. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдЖрд░рдВрдн рдХрд░рдирд╛
  2. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдирдорд╕реНрдХрд╛рд░ рджреБрдирд┐рдпрд╛!
  3. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: FXML рдФрд░ рджреГрд╢реНрдп
  4. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдмреЗрд╕рд┐рдХ рд▓реЗрдЖрдЙрдЯ
  5. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдЙрдиреНрдирдд рд▓реЗрдЖрдЙрдЯ
  6. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓
  7. JavaFX рд╡реАрд╡рд░: JavaFX рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ

рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХрд╛


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕рд░рд▓ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ ред

рдмрд╕ рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ - рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджреЗрдЦрд╛:

@Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Hello world Application"); primaryStage.setWidth(300); primaryStage.setHeight(200); InputStream iconStream = getClass().getResourceAsStream("/icon.png"); Image image = new Image(iconStream); primaryStage.getIcons().add(image); Label helloWorldLabel = new Label("Hello world!"); helloWorldLabel.setAlignment(Pos.CENTER); Scene primaryScene = new Scene(helloWorldLabel); primaryStage.setScene(primaryScene); primaryStage.show(); } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯреЗрдб рд▓реЗрдЖрдЙрдЯ рдФрд░ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЗ рдХрдИ рд╕реНрддрд░реЛрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ - рдПрдХ рд╣реА рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдб рд╣реИ рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрд░рдЪрдирд╛, рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХрд┐рдП рд╣реИрдВ:

  • HTML рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ
  • рд╕реАрдПрд╕рдПрд╕ рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рд╣реИ
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ

рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдХрд╛ рдкрд░рд┐рдЪрдп


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рднреА рдХреЛрдб рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдмрдВрдзрдиреАрдп рдмрдирд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдЖрдк "рдореЙрдбрд▓-рд╡реНрдпреВ-рдЬреЛ рднреА" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ - рдпрд╣ "рдореЙрдбрд▓ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░," "рдореЙрдбрд▓ рд╡реНрдпреВ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛," рдпрд╛ "рдореЙрдбрд▓ рд╡реНрдпреВ рд╡реНрдпреВрдореЙрдбрд▓" рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реИред

рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЪрд▓реЛ рдпрд╣рд╛рдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, JavaFx рдХреЗ рд╕рд╛рде рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдШреЛрд╖рдгрд╛рддреНрдордХ XML рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред HTML рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рдЖрдк рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╛рддрдЪреАрдд рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

FXML рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рддреЛ, рд╣рдо рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд▓реЙрдиреНрдЪ рд╡рд┐рдзрд┐ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

 FXMLLoader loader = new FXMLLoader(); URL xmlUrl = getClass().getResource("/mainScene.fxml"); loader.setLocation(xmlUrl); Parent root = loader.load(); primaryStage.setScene(new Scene(root)); primaryStage.show(); 

рдпрд╣рд╛рдВ рд░реВрдЯ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдЯ рдШрдЯрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рдШрдЯрдХ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред

рд▓реЛрдб рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рдЯрд░реНрди рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрднрд┐рднрд╛рд╡рдХ рдирд╣реАрдВред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдШрдЯрдХ-рдЙрдиреНрдореБрдЦ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдорд┐рд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдирд╛рдЬреБрдХ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ FXML рдореЗрдВ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рди рдЯрд╛рдЗрдо рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЖрдкрдХреЗ FXML рдФрд░ Java FXML рд▓реЛрдбрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдмреЗрдореЗрд▓ рд╣реИред

FXML рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ


рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .fxml рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рд╡реЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЖрдк рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд░рд┐рд╕реЛрд░реНрд╕ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓рдПрд▓рдбрд┐рдпрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ XML рдШреЛрд╖рдгрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ:

 <?xml version="1.0" encoding="UTF-8"?> 

рдЖрдпрд╛рдд


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
 <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> 

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЗ рдЖрдИрдбреАрдИ рдХреЛ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдЬреИрд╕реЗ рдЖрдпрд╛рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдШрдЯрдХ рдЬреЛрдбрд╝рдирд╛


рдЕрдм рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд▓ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реЗрдВ:

 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <!--      --> <Label>Hello World!</Label> 

рдмреЗрд╢рдХ, рд░реВрдЯ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдмрд▓рд┐рдВрдЧ рдПрдХ рдмрд╣реБрдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЗрдЖрдЙрдЯ (рд▓реЗрдЖрдЙрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рд╕рд░рд▓ VBox рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд░рдЦрддрд╛ рд╣реИред

 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <?import javafx.scene.layout.VBox?> <?import javafx.scene.control.Button?> <VBox> <Label text="Hello world!"/> <Label text="This is a simple demo application."/> <Button text="Click me!"/> </VBox> 

рдПрдлрдПрдХреНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕


рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рддрддреНрд╡реЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Namespace FXML рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 <?xml version="1.0" encoding="UTF-8"?> ... <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"> ... </VBox> 

рдЕрдм рдЖрдк fx рдирд╛рдо рд╕реНрдерд╛рди рд╕реЗ рдирдП рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 <Label fx:id="mainTitle" text="Hello world!"/> 

рдПрдлрдПрдХреНрд╕: рдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЕрднреА рднреА рд╕реНрдерд┐рд░ рд╣реИред рдХрдИ рд▓реЗрдмрд▓ рдФрд░ рдПрдХ рдмрдЯрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреБрдЫ рднреА рдЧрддрд┐рд╢реАрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВ рдФрд░ рд╢реАрд░реНрд╖рдХ "рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ!" рд╕реЗ рдмрджрд▓рдХрд░ "рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ!"ред

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирдПрдХреНрд╢рди рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред

 <Button fx:id="mainButton" text="Click me!" onAction="buttonClicked()"/> 

рдПрдлрдПрдХреНрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдЖрдИрдбреА, рдпрд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдмрдЯрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдПрдлрдПрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЧреНрд░реВрд╡реА рдпрд╛ рдХреНрд▓реЛрдЬрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдмрдЯрди рдШрдЯрдХ рдХреЛ рдореЗрдирдмрдЯрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЗрд╕ рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 fx:id = "mainButton" 

рдЖрдкрдХреЛ рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдХрд┐рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 <?language javascript?> 

рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рджреЗрдЦреЗрдВ:



рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдлрдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП : рдЖрдИрдбреА рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред FXML рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣рд┐рддреЛрдВ рдХреА рдЬреБрджрд╛рдИ рдерд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ред рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рд╣реБрдЖ рд╡реНрдпрд╡рд╣рд╛рд░ рдлрд┐рд░ рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдЕрдм рд╣рдо рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд╕рд╛рде, рд╕рдВрдХрд▓рди рд╕рдордп рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рднреА рдХреЛрдб рдЪреЗрдХ рдЦреЛ рдЧрдП рдереЗред рдЕрдм рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдирд╣реАрдВред рдЖрд╡реЗрджрди рдмрд╣реБрдд рдирд╛рдЬреБрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЬреЛрдбрд╝рдирд╛


рддреЛ рд╣рд┐рддреЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╣рдорд╛рд░реА FXML рдлрд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЖрдк рдЯрд╛рдЗрдк рд╕реЗрдлреНрдЯреА рдФрд░ рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЪреЗрдХ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ POJO рд╣реИ, рдЗрд╕реЗ рдХрд┐рд╕реА рдЪреАрдЬ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рд╣реА рдЗрд╕рдХреА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЕрдкрдиреЗ FXML рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ? рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдЬрд╛рд╡рд╛ рдореЗрдВ


рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡рдпрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рдиред рддреЛ рдмрд╕ рдЕрдкрдиреЗ FXMLLoader рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

 FXMLLoader loader = new FXMLLoader(); loader.setController(new MainSceneController()); 

рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ


рдЖрдк рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ fx: рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд░реВрдЯ рдШрдЯрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

 <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="com.vojtechruzicka.MainSceneController"> ... </VBox> 

рдпрджрд┐ рдЖрдк рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдПрдХ рд╕реАрдорд╛ рд╣реИ - рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЖрдкрдХреЛ рддрд░реНрдХ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХреЗред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк FXML рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("/mainScene.fxml")); MainSceneController controller = loader.getController(); 

рдХреЙрд▓рд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рддрд░реАрдХреЗ


рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕реАрдзреЗ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public class MainSceneController { public void buttonClicked() { System.out.println("Button clicked!"); } } 

рдЕрдЧрд▓рд╛ рдХрджрдо рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рдХреЙрд▓ рдХреЛ рд╣рдорд╛рд░реЗ рдмрдЯрди рдХреЗ рдСрдирдПрдХреНрд╢рди рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ # рдЪрд┐рд╣реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="com.vojtechruzicka.MainSceneController"> <Label fx:id="mainTitle" text="Hello world!"/> <Label fx:id="subTitle" text="This is a simple demo application."/> <Button fx:id="mainButton" text="Click me!" onAction="#buttonClicked"/> </VBox> 

рдЬрдм рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ MainSceneController.buttonClicked () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд┐рдзрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ, рддреЛ рдЖрдкрдХреЛ @FXML рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

 @FXML private void buttonClicked() { System.out.println("Button clicked!"); } 

рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдШрдЯрдХ рдПрдореНрдмреЗрдб рдХрд░рдирд╛


рдЕрдм рддрдХ, рд╣рдо рд╕рд┐рд░реНрдл рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдмрдЯрди рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ " рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ " рдлрд┐рд░ рд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрд╕рд╛рди рд╣реИред рдЗрди fx рдпрд╛рдж рд░рдЦреЗрдВ : рдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ?

 <Button fx:id="mainButton" text="Click me!" onAction="#buttonClicked"/> 

JavaFX рдПрдлрдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ : рдЖрдИрдбреА рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рдеред

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдПрдХ рдмрдЯрди рд╣реИ

 fx:id="mainButton" 

JavaFX рдореЗрдирдмрдЯрди рдирд╛рдордХ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЕрдкрдиреЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдмрдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:

 public class MainSceneController { //    fx:id = "mainButton" @FXML private Button mainButton; } 

рдкрд┐рдЫрд▓реЗ рддрд░реАрдХреЛрдВ рдХреА рддрд░рд╣, рдЖрдкрдХреЗ рдлрд╝реАрд▓реНрдб рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдпрд╛ рдПрдиреЛрдЯреЗрдЯ @FXML рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдмрдЯрди рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рдкрд╛рда рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 public class MainSceneController { @FXML private Button mainButton; @FXML private void buttonClicked() { mainButton.setText("Click me again!"); } } 

рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛


XML рдореЗрдВ рдЖрдкрдХреА GUI рд╕рдВрд░рдЪрдирд╛ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд╡рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдпрджрд┐ рдЖрдк HTML рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрднреА рднреА рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдмрд┐рд▓реНрдбрд░ рдирд╛рдордХ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЗ GUI рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд▓реЗрдЦреАрдп рд╕рдВрдкрд╛рджрдХ рд╣реИред



рд╕рдВрдкрд╛рджрдХ рдХреЗ рддреАрди рдореБрдЦреНрдп рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ:

  1. рдмрд╛рдПрдВ рднрд╛рдЧ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдШрдЯрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдордзреНрдп рднрд╛рдЧ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рднреА рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдордзреНрдп рднрд╛рдЧ рдЖрдкрдХреЗ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡реЗрджрди рд╣реИред
  3. рджрд╛рдИрдВ рдУрд░ рд╡рд░реНрддрдорд╛рди рдШрдЯрдХ рдирд┐рд░реАрдХреНрд╖рдХ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдЪрдпрдирд┐рдд рд╡рд░реНрддрдорд╛рди рдШрдЯрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдмреАрдЪ рдореЗрдВ рдЪрдпрдирд┐рдд рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЛ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди


рд╕реАрди рдмрд┐рд▓реНрдбрд░ рдХреЛ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг


рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╕реАрди рдмрд┐рд▓реНрдбрд░ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

IntelliJ IDEA рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА FXML рдлрд╝рд╛рдЗрд▓ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ SceneBuilder рдореЗрдВ рдУрдкрди рдореЗрдиреВ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрдВрдЯреЗрд▓реАрдЬреЗ рдЖрдИрдбреАрдИрдП рд╕реАрдзреЗ рдЖрдИрдбреАрдИ рдореЗрдВ рд╕реАрдирдмреНрдпреВрд░реАрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк IDEA рдореЗрдВ FXML рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рджреЛ рдЯреИрдм рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ

  • рдЯреЗрдХреНрд╕реНрдЯ
  • SceneBuilder

рдкреНрд░рддреНрдпреЗрдХ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реАрдзреЗ рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдпрд╛ рд╕реАрдирдмрд┐рд▓реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдореЗрдВ, рдЖрдк рд╕реАрдиреНрдпреВрдмрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

Settings тЖТ Languages & Frameworks тЖТ JavaFX тЖТ Path to SceneBuilder

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ


рд╣рдорд╛рд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдХреБрдЫ рдореВрд▓ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ JavaFX рдореЗрдВ GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi474982/


All Articles