JavaFX рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛: рдЯреЙрд╡рд░ рд░рдХреНрд╖рд╛

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

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

JavaFX рдХреНрдпреЛрдВ? рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рддрдХрдиреАрдХ рд╕реЗ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рд╡реЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред


рдбрд┐рдЬрд╛рдЗрди рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рддрдХ


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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ FXZ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЛ рдирд╛рдо рд╕реЗ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд░рдЦ рд╕рдХрддрд╛ рд╣реИред

рд╕рджрд┐рд╢ рдЪрд┐рддреНрд░рдг


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

<? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0" рдПрдиреНрдХреЛрдбрд┐рдВрдЧ = "utf-8" рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди = "рд╣рд╛рдВ" ?>

<svg рдЪреМрдбрд╝рд╛рдИ = "550px" рдКрдВрдЪрд╛рдИ = "550px" рджреГрд╢реНрдп рдмреЙрдХреНрд╕ = "0 0 1200 400" xmlns = "http://www.w3.org/2000/svg" рд╕рдВрд╕реНрдХрд░рдг = "1.1" >

<g id = "jfx: path" >
<рдкрде d = "M 50 120 L 250 120 A 25, 20 0 0 250 250 L 150 300 A 25 20 0 0 0 150 480 L 340 480"
рднрд░ = "рдХреЛрдИ рдирд╣реАрдВ" рд╕реНрдЯреНрд░реЛрдХ = "рдбрд╛рд░реНрдХрдЧреНрд░реАрди" рд╕реНрдЯреНрд░реЛрдХ-рдЪреМрдбрд╝рд╛рдИ = "20" />
</ g > рд╣реИ

<g id = "jfx: рдкреНрд░рд╛рдгреА" >
<рд╡реГрддреНрдд cx = "150" рд╕рд╛рдЗрдмрд░ = "50" r = "20" рднрд░реЗрдВ = "рдкреАрд▓рд╛" рд╕реНрдЯреНрд░реЛрдХ = "рдирд╛рд░рдВрдЧреА" />
</ g > рд╣реИ

</ svg >

FXZ рдлрд╝рд╛рдЗрд▓


рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
FXD {
рд╕рд╛рдордЧреНрд░реА : [
рд╕рдореВрд╣ {
рдЖрдИрдбреА : "рдкрде"
рд╕рд╛рдордЧреНрд░реА : [
SVGPath {
рд╕рд╛рдордЧреНрд░реА : "рдПрдо 50 120 рдПрд▓ 250 120 рдП 25, 20 0 0 1 250 300 рдПрд▓ 150 300 рдП 25 20 0 0 0 150 480 340 340"
рднрд░ : рдирд▓
рд╕реНрдЯреНрд░реЛрдХ : рд░рдВрдЧ ред DARKGREEN
рд╕реНрдЯреНрд░реЛрдХрд╡рд╛рд░реНрдб : 20.0
}
]
} ,
рд╕рдореВрд╣ {
рдЖрдИрдбреА : "рдкреНрд░рд╛рдгреА"
рд╕рд╛рдордЧреНрд░реА : [
рд╕рд░реНрдХрд▓ {
рд╕реЗрдВрдЯрд░рдПрдХреНрд╕ : 150.0
рдХреЗрдВрджреНрд░ : 50.0
рднрд░реЗрдВ : рд░рдВрдЧ ред рдкреАрд▓рд╛
рддреНрд░рд┐рдЬреНрдпрд╛ : 20.0
рд╕реНрдЯреНрд░реЛрдХ : рд░рдВрдЧ ред рдСрд░реЗрдВрдЬ
}
]
}
]
}



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ jfx рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдкрд░рдд рдирд╛рдореЛрдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

JavaFX рдкреНрд░реЛрдЧреНрд░рд╛рдо


рдЕрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЖрдк рдЗрди 2 рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЖрдпрд╛рдд javafx.fxdред * ;
рдЖрдпрд╛рдд javafx.stageред * ;
рдЖрдпрд╛рдд javafx.sceneред * ;

def рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ = FXDLoaderред loadContent ( "{__DIR __} graphics.fxz" ) ;

рд╕реНрдЯреЗрдЬ {
рд╢реАрд░реНрд╖рдХ : "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╢реАрд░реНрд╖рдХ"
рджреГрд╢реНрдп : рджреГрд╢реНрдп {
рдЪреМрдбрд╝рд╛рдИ : 550
рдКрдВрдЪрд╛рдИ : 550
рд╕рд╛рдордЧреНрд░реА : [ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред getNode ( "рдкрде" ) , рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред getNode ( "рдкреНрд░рд╛рдгреА" ) ]
}
}

рдПрдиреАрдореЗрд╢рди


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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдореВрд╣ рддрддреНрд╡ рд╕реЗ рд╕реНрд╡рдпрдВ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ PathTransition рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

рдЖрдпрд╛рдд javafx.fxdред * ;
рдЖрдпрд╛рдд javafx.stageред * ;
рдЖрдпрд╛рдд javafx.sceneред * ;
рдЖрдпрд╛рдд javafx.scene.shapeред * ;
рдЖрдпрд╛рдд javafx.animationред * ;
рдЖрдпрд╛рдд javafx.animation.transitionред * ;

def рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ = FXDLoaderред loadContent ( "{__DIR __} graphics.fxz" ) ;
def рдкреНрд░рд╛рдгреА = рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред рдЧреЗрдЯрдиреЛрдб ( "рдкреНрд░рд╛рдгреА" ) ;
def рдкрде = ( рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред getNode ( "рдкрде" ) рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ ) ред рд╕рд╛рдордЧреНрд░реА [ 0 ] SVGPath рдХреЗ рд░реВрдк рдореЗрдВ ;

рд╕реНрдЯреЗрдЬ {
рд╢реАрд░реНрд╖рдХ : "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╢реАрд░реНрд╖рдХ"
рджреГрд╢реНрдп : рджреГрд╢реНрдп {
рдЪреМрдбрд╝рд╛рдИ : 550
рдКрдВрдЪрд╛рдИ : 550
рд╕рд╛рдордЧреНрд░реА : рд╕рдореВрд╣ {
рд╕реНрдХреЗрд▓рдПрдХреНрд╕ : 0.5
рд╕реНрдХреЗрд▓ : 0.5
рд╕рд╛рдордЧреНрд░реА : [ рдкрде, рдкреНрд░рд╛рдгреА ]
}
}
}

рдкрдердкреНрд░рджрд░реНрд╢рди {
рдЕрд╡рдзрд┐ : 10 рдПрд╕
рдиреЛрдб : рдкреНрд░рд╛рдгреА
рдЗрдВрдЯрд░рдкреЛрд▓рд░ : рдЗрдВрдЯрд░рдкреЛрд▓рд░ред рд░реЗрдЦреАрдп
рдкрде : рдПрдирд┐рдореЗрд╢рдирдкреИрдеред createFromPath ( рдкрде )
} ред рдЦреЗрд▓ ( ) ;
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рд╕рдбрд╝рдХ рд╕реЗ рдкреНрд░рд╛рдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдФрд░ рдЯреЙрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдгрд┐рдпреЛрдВ рддрдХ рдЧреЛрд▓реЗ рдХреА рдЙрдбрд╝рд╛рди рдХреЛ рдЪреЗрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдлрд┐рд░ JavaFX рдЯреЙрд╡рд░ рд░рдХреНрд╖рд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред

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


All Articles