рдЬрд╛рд╡рд╛рдПрдлрд╝рдПрдХреНрд╕ 2.0 рдмреАрдЯрд╛ - рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ред рдореИрдХ рд╢реИрд▓реА рдореЗрдиреВ рдЙрджрд╛рд╣рд░рдг

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

рд▓реЗрдХрд┐рди 100 рдмрд╛рд░ рд╕реБрдирдиреЗ рдХреА рдмрдЬрд╛рдп рдПрдХ рдмрд╛рд░ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд╛рде рдореИрдХ-рд╢реИрд▓реА рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рд╕реНрдХрдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

рдЫрд╡рд┐

рдкрд╣рд▓рд╛ рдХрджрдо JavaFX рдХреЛ рдЗрдВрд╕реНтАНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдиреЗрдЯрдмреАрдиреНрд╕ рдкреНрд▓рдЧрдЗрди ( http://www.oracle.com/technetwork/java/javafx/downloads/index.html ) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ JavaFX2.0, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдЖрдк NetBeans рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдЙрд╕реА рд▓рд┐рдВрдХ рд╕реЗ SDK рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ jfxrt.jar рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

рддреЛ, рд╣рдо рдорд╛рдЙрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:

//    JavaFX     Application public class FXUIDemo extends Application { public static void main(String[] args) { //     --    FX       Application.launch(args); } private HBox taskbar; @Override public void start(Stage stage) { //     stage    stage.setTitle("FX Demo"); //    ,      layout manager   BorderPane root = new BorderPane(); Scene scene = new Scene(root, 720, 550, Color.LIGHTGRAY); stage.setScene(scene); //   layout  - -- horizontal box taskbar = new HBox(10); taskbar.setPadding(new Insets(10, 30, 50, 30)); taskbar.setPrefHeight(150); taskbar.setAlignment(Pos.CENTER); root.setBottom(taskbar); //        for (int i = 0; i < 5; i++) { ImageView node = new ImageView(new Image(getClass().getResource("icon-" + i + ".png").toString())); taskbar.getChildren().add(node); } stage.setVisible(true); } } 

рдпрд╣рд╛рдБ рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдЫрд╡рд┐

рдЕрдм рдмрдЯрди рдХреЛ рд░рд┐рд╡рд╛рдЗрдЬ рдХрд░реЗрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдорд╛рдЙрд╕ рдХреЛ рдкрдХрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝реЗрдВ, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рдПрдиреАрдореЗрд╢рди рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдмред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдиреАрдореЗрд╢рди рд╕реНрдХреЗрд▓рдЯреНрд░рд╛рдВрд╕рд┐рд╢рди рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 ScaleTransition animationGrow = new ScaleTransition(Duration.valueOf(300), node); animationGrow.setToX(1.3); animationGrow.setToY(1.3); animationGrow.play(); 


рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо ScaleTransiton рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ 300ms рдореЗрдВ рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1.3 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд╕реНрдХреЗрд▓рдЯреНрд░рд╛рдВрд╕рд┐рд╢рди рд╡рд░реНрдЧ рд╕рднреА рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдиреЛрдб рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдореВрд▓реНрдп, рдПрдлрдкреАрдПрд╕ рдФрд░ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЪрд┐рдХрдирд╛рдИ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдХреНрд░рдордг рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ: рдЖрдХрд╛рд░, рд╕реНрдерд╛рди, рдЭреБрдХрд╛рд╡ рдХреЛрдг, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛, рдЖрджрд┐ред

рдЕрдм рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЬреЛрдбрд╝реЗрдВ:

 node.setEffect(new Reflection()); 


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

 private static final double SCALE = 1.3; //   private static final double DURATION = 300; //     private Node createButton(String iconName, final Runnable action) { //   final ImageView node = new ImageView(new Image(getClass().getResource(iconName).toString())); //     final ScaleTransition animationGrow = new ScaleTransition(Duration.valueOf(DURATION), node); animationGrow.setToX(SCALE); animationGrow.setToY(SCALE); //   final ScaleTransition animationShrink = new ScaleTransition(Duration.valueOf(DURATION), node); animationShrink.setToX(1); animationShrink.setToY(1); //    final Reflection effect = new Reflection(); node.setEffect(effect); //    node.setOnMouseClicked(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { action.run(); } }); //         node.setOnMouseEntered(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { node.toFront(); animationShrink.stop(); animationGrow.playFromStart(); } }); //    --    node.setOnMouseExited(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { animationGrow.stop(); animationShrink.playFromStart(); } }); return node; } 


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

 //    final ColorAdjust effectPressed = new ColorAdjustBuilder().brightness(-0.5).build(); node.setOnMouseReleased(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { //     .    :      , //      ,   input    effect.setInput(effectPressed); //  Timeline,   300   . new TimelineBuilder().keyFrames(new KeyFrame(Duration.valueOf(300), new EventHandler<ActionEvent>() { public void handle(ActionEvent event) { effect.setInput(null); } })).build().play(); action.run(); } }); 


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рдордпрд░реЗрдЦрд╛ рдФрд░ ColorAdjust рдмрд┐рд▓реНрдбрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдереЗред рд▓рдЧрднрдЧ рд╕рднреА JavaFX2.0 рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдЫрд╡рд┐

рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд░реБрдХреЗрдВрдЧреЗред рдмрдЯрди рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рдереЗ, рдФрд░ рдЖрдЧреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рдкрд░ рдореИрдВ рд╕рдВрдмрдВрдзрд┐рдд JavaFX рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рдирдП рдШрдЯрдХреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

 // StackPane --  layout manager,         StackPane view = new StackPane(); root.setCenter(view); view.getChildren().add(new Text("Hello from JavaFX...")); 


рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрдЯрди рдирд┐рд░реНрдорд╛рдг рдЪрдХреНрд░ рдХреЛ рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрдердХ рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдмрдирд╛рдПрдВрдЧреЗред

рддреЛ, рдкрд╣рд▓рд╛ рдмрдЯрди рдПрдХ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдкреНрд░рд╛рд░рдВрдн () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП createButton () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

 mediaPlayer = new MediaPlayer(new Media("http://webcast-west.sun.com/oow2010.flv")); taskbar.getChildren().add(createButton("icon-0.png", new Runnable() { public void run() { changeView(new MediaView(mediaPlayer)); mediaPlayer.play(); } })); 


рдмрд╛рдж рдХреЗ рдмрдЯрдиреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪреЗрдВрдЬ рд╡реНрдпреВ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореАрдбрд┐рдпрд╛рдкреНрд▓реЗрдпрд░ рдФрд░ рд╡реНрдпреВ рдЪрд░ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 private StackPane view; private MediaPlayer mediaPlayer; private void changeView(Node node) { view.getChildren().clear(); //  view mediaPlayer.stop(); //  ,    view.getChildren().add(node); //   view   } 


рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ

рдЫрд╡рд┐

рджреВрд╕рд░рд╛ рдмрдЯрди рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╣реИред

JavaFX2.0 рдореЗрдВ, 6 рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд░рд╛рдл рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬреЛрдВ рдХрд┐ ChartsSampler рдбреЗрдореЛ рдЖрд╡реЗрджрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рдПрдХ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдмрдирд╛рдПрдВрдЧреЗред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрдкрдХреЛ рд╕рдордиреНрд╡рдп рдЕрдХреНрд╖реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдирд╛рдо рджреЗрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдмрдирд╛рдПрдВред
рдлрд┐рд░ рднреА, рдпрд╣ рд╕рдм рдХреЛрдб рдХреА 15-20 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

 taskbar.getChildren().add(createButton("icon-1.png", new Runnable() { public void run() { //   NumberAxis xAxis = new NumberAxis(); NumberAxis yAxis = new NumberAxis(); //  LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis, yAxis); chart.setTitle("Basic LineChart"); xAxis.setLabel("X Axis"); yAxis.setLabel("Y Axis"); //    XYChart.Series<Number, Number> series = new XYChart.Series<Number, Number>(); series.setName("Random Data"); Random random = new Random(); for (int i = 0; i < 10 + random.nextInt(20); i++) { series.getData().add(new XYChart.Data<Number, Number>(10 * i + 5, random.nextDouble() * 120)); } chart.getData().add(series); changeView(chart); } })); 


рдЫрд╡рд┐

рдпрджреНрдпрдкрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░реЗрдЦрд╛рдВрдХрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдирд┐рдореЗрдЯреЗрдб рд╣реИрдВ рдФрд░ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕реБрдЪрд╛рд░реВ рдкрд╛рд░реА рд╣реЛ рдЬрд╛рдПрдЧреАред

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

 taskbar.getChildren().add(createButton("icon-2.png", new Runnable() { public void run() { Accordion accordion = new Accordion(); for (int i = 0; i <= 4; i++) { TitledPane t1 = new TitledPane(new Label("Image " + i), new ImageView(new Image(getClass().getResource("icon-" + i + ".png").toString()))); accordion.getPanes().add(t1); } changeView(accordion); } })); 


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдиреАрдореЗрд╢рди рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ: рдкреИрдирд▓ рдЕрдЪрд╛рдирдХ рдирд╣реАрдВ рдЦреБрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдФрд░ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗред

рдЫрд╡рд┐

рдЪреМрдерд╛ рдмрдЯрди: WebView - рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ред рдпрд╣ рдШрдЯрдХ рд╕рдВрдкреВрд░реНрдг WebKit- рдЖрдзрд╛рд░рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ CSS, JavaScript, DOM рдФрд░ HTML5 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

 taskbar.getChildren().add(createButton("icon-3.png", new Runnable() { public void run() { WebView web = new WebView(new WebEngine("http://habrahabr.ru")); changeView(web); } })); 


рдФрд░ JavaFX рдХреЗ рдЕрдВрджрд░ habrahabr.ru рджреЗрдЦреЗрдВред

рдЫрд╡рд┐

рдЕрдВрдд рдореЗрдВ, рдЖрдЦрд┐рд░реА, рдкрд╛рдВрдЪрд╡реЗрдВ рдмрдЯрди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ JavaFX2.0 рдХреА рджреЛ рдФрд░ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ - рдмрдВрдзрди рдФрд░ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВред

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

 Slider slider = new Slider(); Circle circle = new Circle(); circle.radiusProperty().bind(slider.valueProperty()); 


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

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

 taskbar.getChildren().add(createButton("icon-4.png", new Runnable() { public void run() { //   ListView listView = new ListView(); //    listView.setItems(FXCollections.observableArrayList( "-fx-background-color: green;", "-fx-background-color: linear (0%,0%) to (100%,100%) stops (0.0,aqua) (1.0,red);", "-fx-background-color: transparent;", "-fx-opacity: 0.3;", "-fx-opacity: 1;")); //  binding         taskbar.styleProperty().bind(listView.getSelectionModel().selectedItemProperty()); changeView(listView); } })); 


рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдПрдХ рдврд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рд╕реНрдХрдмрд╛рд░ рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред

рдЫрд╡рд┐

рд╡рд╣ рд╕рдм рд╣реИред рд╣рдордиреЗ 200 рд╕реЗ рдХрдо рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдХреЛрдб рд▓рд┐рдЦреЗ рдФрд░ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдпреВрдЖрдИ рдирдореВрдирд╛ рдмрдирд╛рдпрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдХреБрдЫ рд▓рд┐рдВрдХ:
- рд▓реЗрдЦ рд╕реЗ рдЖрд╡реЗрджрди рдХреЛрдб: http://www.javaone.ru/data/FXUIDemo.zip
- рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ: http://www.youtube.com/watch?v=IHhA8G-0C9M
- http://download.oracle.com/javafx/ рдкрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рд╣реИрдВ
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, SDK рдФрд░ Netbeans рдмрдВрдбрд▓ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреА рдЯреБрдХрдбрд╝реА - рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд javadoc рдФрд░ рдХреЛрдб рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЧреНрд░рд╣ред
- рдЪрд╛рд░реНрдЯрд╕реИрдВрдкрд▓рд░ - рдЪрд╛рд░реНрдЯ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди, рдФрд░ рдХрд╛рдлреА рдЕрд╕рд╛рдорд╛рдиреНрдпред

рдпрд╣ рд▓реЗрдЦ рд╕рд░реНрдЧреЗрдИ рдЧреНрд░рд┐рдиреЗрд╡ рдФрд░ рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдмреЗрд▓реЛрдХреНрд░рд┐рд▓реЛрд╡ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

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


All Articles