ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Как Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Swing GUI-Π²ΠΈΠ·Π°Ρ€Π΄ΠΎΠΌ IntelliJ IDEA. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция

Π”Π°Π²Π½ΠΎ Π½Π΅ писал Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈ с использовании Swing Π² частности. Однако, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ GUIΡ‚ΡŒ. Π’ качСствС инструмСнта Π²Ρ‹Π±Ρ€Π°Π» IntelliJ IDEA Community edition, 2016.1 вСрсии.

Взялся Π²Π°ΡΡ‚ΡŒ ΠΈ, СстСствСнно, ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π½Π° Ρ‡Ρ‚ΠΎ Π½Π°Π»Π΅Ρ‚Π΅Π» β€” хотя со Π²Ρ€Π΅ΠΌΡ‘Π½ Borland Java Builder 2006 Π²ΠΎΠ΄Ρ‹ ΡƒΡ‚Π΅ΠΊΠ»ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ, экранныС интСрфСйсы ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π΅ стало, скорСС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. А ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π²Ρ‹Π±ΠΎΡ€Π° IDEA Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Swing Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π° Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ», ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Ρ…ΠΎΠ΄Ρƒ Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСпонятно β€” Ρ„ΠΎΡ€ΠΌΠ° гСнСрится, класс создаётся, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΠ² ΠΈΠ· дизайнСра… Π½ΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ: ΠΏΡ€ΠΈ создании нашСго класса Ρ„ΠΎΡ€ΠΌΠ° Π½Π° экранС Π½Π΅ появляСтся

ΠŸΠΎΡˆΠ°Ρ€ΠΈΠ» ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ноль. Народ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, ΠΌΠΎΠ», «создавай ΠΈ β€” Π²ΠΏΠ΅Ρ€Ρ‘Π΄!Β». Π₯м…

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… мытарств Π½Π° эту Ρ‚Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π±Ρ‹Π»ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Π±Ρ‹Π»ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅, Ρ‡Π΅ΠΌ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ваяСт Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° Swing.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Swing GUI Ρ„ΠΎΡ€ΠΌ срСдствами JetBrains IntelliJ IDEA 2016.1

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π½Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сгСнСрили класс-наслСдник JDialog (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ) ΠΈ Ρ„ΠΎΡ€ΠΌΠ° ΠΊ Π½Π΅ΠΌΡƒ.
ЗапускаСм наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ и… ΠΎ уТасчудо! ΠΏΡ€ΠΈ компиляции IDEA добавляСт Π² ΠΊΠΎΠ½Π΅Ρ† нашСго Ρ„Π°ΠΉΠ»Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ поняли, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ созданию ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„ΠΎΡ€ΠΌ β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ².

ГСнСрится класс ΠΈ Ρ„ΠΎΡ€ΠΌΠ° ΠΊ Π½Π΅ΠΌΡƒ. НакидываСм Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ нСсколько ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΠ². Π’ GUI Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π΅ смотрим имя ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ panel1, Ссли IDEA Π½Π΅ Π·Π°Π΄Π°Π»Π° имя, Π° Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ β€” я для наглядности Π½Π°Π·Π²Π°Π» rootPanel).

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ нашСго класса.

Π˜Ρ‚Π°ΠΊ:
1. ДобавляСм для нашСго класса наслСдованиС Β«extends JFrameΒ»;
2. ДобавляСм конструктор класса со строками:

Всё. Π€ΠΎΡ€ΠΌΠ° Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ смотритС Π² многочислСнных инструкциях ΠΏΠΎ Swing.

P.S. Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ наш класс ΠΎΡ‚ JFrame, Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ конструктор Π²ΠΈΠ΄Π°:

Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ пригодится.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ простой GUI ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС Java

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования GUI Π½Π° языкС Java. Π£Ρ€ΠΎΠΊ 1.

Π’ этой ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ…ΠΎΡ‡Ρƒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ процСсс создания нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ GUI Π½Π° языкС Java. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°ΠΊΠΎΠΌ с основами языка Java.

И Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Π― Π½Π°Π·Π²Π°Π» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ guiBase. Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° скринС, ΠΏΠ°ΠΏΠΊΠ° src Π½Π΅ содСрТит Π½ΠΈΡ‡Π΅Π³ΠΎ, поэтому создаСм Π² Π½Π΅ΠΉ наш Π³Π»Π°Π²Π½Ρ‹ΠΉ класс, содСрТащий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main.

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ GUI Ρ„ΠΎΡ€ΠΌΡƒ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° JPanel ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² ΠΏΠΎΠ»Π΅ field name, я Π·Π°Π΄Π°Π» panel.

ПослС Ρ‡Π΅Π³ΠΎ пСрСтаскиваСм Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ с ΠΏΡ€Π°Π²ΠΎΠΉ стороны JTextField, JPasswordField ΠΈ JButton:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ„ΠΎΡ€ΠΌΡƒ с Π½ΠΈΠΌ. Когда ΠΌΡ‹ добавляли Ρ„ΠΎΡ€ΠΌΡƒ MainWindow, автоматичСски создался ΠΈ класс MainWindow, этот класс являСтся классом созданной Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚.Π΅. ΠΈΠΌΠ΅Π½Π½ΠΎ этот класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ всС события Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ этого класса Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя измСнСния Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ JButton, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Π΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… (свойстах) класса MainWindow.

Π₯отя класс нашСго ΠΎΠΊΠ½Π° содСрТит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты, Π½ΠΎ Π΄Π°ΠΆΠ΅ сСйчас ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с GUI, поэтому Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JFrame ΠΈ унаслСдуСм всю ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ GUI.

Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒ MainWindow ΠΈ класс MainWindow Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JFrame. БСйчас Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ всС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ GUI элСмСнты ΠΊΠ°ΠΊ содСрТаниС класса MainWindow this.getContentPane().add(panel); ПослС Ρ‡Π΅Π³ΠΎ содСрТаниС Ρ„Π°ΠΉΠ»Π° MainWindow.java Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π²Ρ‹ снова ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС сообщСниС β€œHello, Govzalla!β€œ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали класс ΠΈ Ρ„ΠΎΡ€ΠΌΡƒ ΠΊ Π½Π΅ΠΌΡƒ, Π½ΠΎ Π½Π΅ создали ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡŽ этого класса.

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Main.java ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΊΠΎΠ΄ создания нашСго GUI:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

НаТав Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Button Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ (Listener) для событий (Events) ΠΊΠ½ΠΎΠΏΠΊΠΈ Button.

Π‘Π»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ событий (Event listener) JButton Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠ»Π΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ActionListener, поэтому Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Ρ‚Π΅Π»ΠΎ класса MainWindow:

ΠœΠ΅Ρ‚ΠΎΠ΄ actionPerformed() Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС события ΠΊΠ½ΠΎΠΏΠΊΠΈ button1, Π½ΠΎ для Π½Π°Ρ‡Π°Π»Π° Π΅Ρ‰Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ΅ button1 ΠΊΠ°ΠΊΠΎΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, поэтому Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² конструктор класса MainWIndow: this.button1.addActionListener(new MyButtonListener()); Π§Ρ‚ΠΎΠ±Ρ‹ наш ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ Π±Ρ‹Π» бСссмыслСнным Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ actionPerformed():

БСйчас ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события, Π½Π΅ Π½Π° всС события, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ. НапримСр, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°ΠΆΠ°Π² Π½Π° крСстик, ΠΎΠΊΠ½ΠΎ исчСзнСт, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚.ΠΊ. Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΊΠ°ΠΆΠΈ Β«Π½Π΅Ρ‚Β» Electron! ПишСм быстроС дСсктопноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° JavaFX

Π’ послСднСС врСмя Π½Π° программистских Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ нСслабыС дискуссии (для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° см. здСсь, здСсь ΠΈ здСсь, ΠΈ эта сСгодняшняя) ΠΎΠ± Electron ΠΈ Π΅Π³ΠΎ влиянии Π½Π° сфСру Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Electron, Ρ‚ΠΎ это ΠΏΠΎ сути Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ (Chromium) Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашС Π²Π΅Π±-прилоТСниС… словно настоящая дСсктопная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (Π½Π΅Ρ‚, это Π½Π΅ ΡˆΡƒΡ‚ΠΊΠ°)… это Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-стСк ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ дСсктопныС прилоТСния.

Π‘Π°ΠΌΡ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅, хипстСрскиС дСсктопныС прилоТСния Π² нашС врСмя сдСланы Π½Π° Electron, Π² Ρ‚ΠΎΠΌ числС Slack, VS Code, Atom ΠΈ GitHub Desktop. НСобычайный успСх.

ΠœΡ‹ писали дСсктопныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСсятилСтиями. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²Π΅Π± Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Π½Π΅Π΅ 20 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΈ Π½Π° протяТСнии ΠΏΠΎΡ‡Ρ‚ΠΈ всСго этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ слуТил Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для доставки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Β«Π³ΠΈΡ„ΠΎΠΊΒ». Никто Π½Π΅ использовал Π΅Π³ΠΎ для создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π°ΠΆΠ΅ самых простых!

Π”Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ стСк Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания дСсктопного прилоТСния. Но наступил 2017 Π³ΠΎΠ΄, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ½Ρ‹Ρ… людСй ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Electron β€” отличная идСя!

Π—Π΄Π΅ΡΡŒ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСвосходства Π²Π΅Π±-стСка для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΎΠ½ Π΄Π°Π»Ρ‘ΠΊ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСвосходства, ΠΈ вряд Π»ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Π± β€” это Π±Π°Ρ€Π΄Π°ΠΊ), сколько ΠΏΡ€ΠΎΠ²Π°Π» ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ UI Π½Π° дСсктопах. Если люди ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΎΡ‚Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ со своими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΉ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты Π²Ρ€ΠΎΠ΄Π΅ JavaScript (сарказм) для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π·Π° уТасныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΡƒΡŽ Π±ΠΎΡ€ΡŒΠ±Ρƒ Π²Π΅Π±-стСку?

Π― Ρ€Π΅ΡˆΠΈΠ» Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Electron

Π•Π»ΠΈ Π²Ρ‹ Π½Π΅ Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ нСсколько Π³Ρ€ΡƒΠΏΠΏ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии прилоТСния ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ ОБ, Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ выглядят ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: AppKit для MacOS, WPF для Windows (я Π½Π΅ спСциалист ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, поТалуйста, ΠΊΠ°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π² наши Π΄Π½ΠΈ Π±ΠΎΠ»Π΅Π΅ популярны).

Однако Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹ Electron β€” это ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. Π”ΡƒΠΌΠ°ΡŽ, срСди Π½ΠΈΡ… самыми популярными сСгодня ΡΠ²Π»ΡΡŽΡ‚ΡΡ GTK+, Qt ΠΈ JavaFX.

GTK+ написан Π½Π° C, Π½ΠΎ связан со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ использовался для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСкрасной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GNOME-3.

Qt каТСтся самой популярной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ Electron Π² дискуссиях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ попадались ΠΌΠ½Π΅ Π½Π° глаза… Π­Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ связанная с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками (хотя каТСтся, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° коммСрчСской основС, ΠΈ слоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько ΠΎΠ½ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹). Qt Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ популярный Π²Ρ‹Π±ΠΎΡ€ для встроСнных систСм.

JavaFX

Однако Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΡŽΡΡŒ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaFX, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ JavaFX ΠΈ JVM ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для дСсктопных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π§Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹ Π½ΠΈ Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΎ JVM, Π½Π΅ сущСствуСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (ΠΊΡ€ΠΎΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, самого Electron!), Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ простой для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ создали свой jar, Π½Π° любой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ всСх ОБ β€” ΠΈ ΠΎΠ½ просто Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈ большом Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΈ языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² JVM, Π²Ρ‹Π±ΠΎΡ€ языка Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ найдётся Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΠΌ понравится (Π² Ρ‚ΠΎΠΌ числС JavaScript, Ссли Π²Ρ‹ Π½Π΅ способны ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ), ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JavaFX с Π»ΡŽΠ±Ρ‹ΠΌ языком JVM Π±Π΅Π· особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΡ€ΠΎΠΌΠ΅ Java, я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Kotlin.

Π‘Π°ΠΌ UI создаётся просто ΠΊΠΎΠ΄ΠΎΠΌ (Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IDE ΠΎΡ‚ IntelliJ, Eclipse ΠΈΠ»ΠΈ NetBeans: это всё ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ бСсплатныС IDE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, прСвосходят Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΈ, кстати, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой самыС Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java) ΠΈΠ»ΠΈ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ конструкторС UI: SceneBuilder (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² IntelliJ) ΠΈΠ»ΠΈ NetBeans Visual Debugger.

JavaFX β€” Π½Π΅ новая тСхнология. Она появилась Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 2008 Π³ΠΎΠ΄Π° ΠΈ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ сСгодня. ИдСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² создании соврСмСнного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° UI для Π·Π°ΠΌΠ΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ Swing Framework, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являлся ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ JVM с ΠΊΠΎΠ½Ρ†Π° 90-Ρ….

Oracle Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ испортила всё с самого Π½Π°Ρ‡Π°Π»Π°, приступив ΠΊ созданию особого, Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ использования для создания UI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ восприняли Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈ Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π° Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ³ΡƒΠ±ΠΈΠ»Π° JavaFX.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Oracle Ρ€Π΅ΡˆΠΈΠ»Π° Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaFX 2 Π² 2011 Π³ΠΎΠ΄Ρƒ Π±Π΅Π· собствСнного особого языка, Π° вмСсто этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² FXML Π² качСствС ΠΎΠΏΡ†ΠΈΠΈ для чистого Java-ΠΊΠΎΠ΄Π° (ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅).

Около 2012 Π³ΠΎΠ΄Π° JavaFX ΠΎΠ±Ρ€Ρ‘Π» Π½Π΅ΠΊΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, Π° Oracle ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠ»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈ популяризации этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π‘ вСрсии 2.2 Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ JavaFX стал достаточно Ρ†Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ, Π½ΠΎ Π΅Π³ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ΅ΠΌΡƒ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ срСду выполнСния Java (хотя ΠΎΠ½ всСгда поставлялся вмСстС с JDK).

Волько с вСрсии JavaFX 8 (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии сдСлано для соотвСтствия Java 8) ΠΎΠ½ стал Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартного Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ° Java.

БСгодня Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ JavaFX ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ являСтся ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ Π² ΠΌΠΈΡ€Π΅ UI, Π½ΠΎ Π½Π° Π½Ρ‘ΠΌ сдСлано Π½Π΅ΠΌΠ°Π»ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ связанных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния JavaFX

Π’ своём ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для просмотра Π»ΠΎΠ³ΠΎΠ² LogFX, я Ρ€Π΅ΡˆΠΈΠ» просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π² основном довольно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° я Ρ…ΠΎΡ‚Π΅Π» ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° скорости ΠΈ ΠΌΠ°Π»ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°) ΠΈ IntelliJ Π² качСствС IDE. Π― ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Kotlin, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Java Π² IntelliJ оказалась Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Java (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ IntelliJ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π·Π° мСня β€” это Π±Π»ΠΈΠΆΠ΅ ΠΊ истинС) стало Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ большой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π°Π²Π΄Π°Ρ‚ΡŒ лишниС 0,9 ΠœΠ‘ Π² дистрибутивС.

Π― Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ FXML (язык описания GUI для JavaFX Π½Π° основС XML) ΠΈΠ»ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ конструктор UI, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ интСрфСйс Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ простой.

Π˜Ρ‚Π°ΠΊ, посмотрим Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠ΄!

Java Hello World

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Hello World Π½Π° JavaFX:

На Β«ΠΌΠ°ΠΊΠ΅Β» этот ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

FXML+Java Hello World

Если Π²Π°ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для UI ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π²ΠΎΡ‚ эквивалСнт Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° с FXML:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ IntelliJ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ FXML ΠΈ свяТСт Π΅Π³ΠΎ содСрТимоС с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, подсвСтит ошибки, сдСлаСт Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, справится с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ, ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎ довольно круто… Π½ΠΎ ΠΊΠ°ΠΊ я Ρ€Π°Π½ΡŒΡˆΠ΅ сказал, Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ FXML, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ UI Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ простым ΠΈ довольно динамичным… Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ я большС Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΡƒ ΠΊΠΎΠ΄Π° FXML. Если интСрСсно, ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ руководство ΠΏΠΎ FXML.

Hello World Π½Π° Kotlin+TornadoFX

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ выглядит Π½Π° соврСмСнном языкС Π²Ρ€ΠΎΠ΄Π΅ Kotlin с Π΅Π³ΠΎ собствСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для написания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaFX, которая называСтся TornadoFX:

Многим ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin ΠΈ JavaFX, особСнно Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² (Π² TornadoFX Π΅ΡΡ‚ΡŒ приятная функция «типобСзопасныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй») ΠΈ Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ лишниС 5 ΠœΠ‘ Π² прилоТСния для вас Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π”Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы каТутся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ со всСми Π΅Π³ΠΎ слоТностями ΠΈ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π°ΠΌΠΈ), Ρ‚ΠΎ Kotlin Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с чистым JavaFX.

Π‘Ρ‚ΠΈΠ»ΠΈ ΠΈ Ρ‚Π΅ΠΌΡ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса JavaFX

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с основами JavaFX, посмотрим, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ стили для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaFX.

Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ стилСй для JavaFX.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρ‘ΠΌΠ½Ρ‹ΠΉ Ρ„ΠΎΠ½ ΠΈ Π±Π΅Π»Ρ‹ΠΉ тСкст, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΈ встроСнныС стили

Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ Π·Π°Ρ‚ΠΎ с бСзопасными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ) β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ способом:

Π‘ΠΎΠ»Π΅Π΅ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ способ β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ стили Π² CSS:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь IntelliJ ΠΎΠΏΡΡ‚ΡŒ обСспСчиваСт Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ строк.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ FXML:

ИспользованиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† стилСй

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠΈΡ€Π° Π²Π΅Π±Π° ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ стили Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… стилСй, JavaFX ΠΈ это ΡƒΠΌΠ΅Π΅Ρ‚! ИмСнно Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ я Π²Ρ‹Π±Ρ€Π°Π», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт ΡΡ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всё Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ стили Π½Π° свой вкус.

Для этого сначала создаём Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ добавляСм Π΅Ρ‘ Π² Scene :

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ всС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΈ Β«Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅Β» элСмСнты ΠΏΡ€ΠΈΠΌΡƒΡ‚ Ρ†Π²Π΅Ρ‚, основанный Π½Π° этом Ρ†Π²Π΅Ρ‚Π΅. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ изящная функция, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° Π½Π° Π±Π°Π·Π΅ основного Ρ†Π²Π΅Ρ‚Π°. Π’Π°ΠΊ Π²Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ссли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ основной Ρ†Π²Π΅Ρ‚, Ρ‚ΠΎ практичСски всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² Π½ΠΎΠ²ΠΎΠΉ расцвСткС.

НапримСр, Π² нашСм случаС Π±ΠΎΠ»Π΅Π΅ подходящим Ρ†Π²Π΅Ρ‚ΠΎΠΌ тСкста станСт Π½Π΅ Π±Π΅Π»Ρ‹ΠΉ, Π° Β«ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉΒ» Ρ†Π²Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ основного Ρ†Π²Π΅Ρ‚Π° Ρ‚Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСкст всСгда оставался Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ:

Π’Π°Π±Π»ΠΈΡ†Ρ‹ стилСй JavaFX довольно ΡƒΠΌΠ½Ρ‹Π΅, для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. CSS Reference Guide.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого прилоТСния, Π³Π΄Π΅ ΠΌΡ‹ поставили ΠΊΠ½ΠΎΠΏΠΊΡƒ вмСсто тСкста. Π‘Π»Π΅Π²Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ стили ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° справа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Π° стилСй, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows
Π‘Π»Π΅Π²Π°: стили ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ JavaFX. Π‘ΠΏΡ€Π°Π²Π°: кастомныС стили, созданныС Π²Ρ‹ΡˆΠ΅

Π’ своём ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Ρ‘ΠΌΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ собствСнныС стили, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, какая ΠΈΠΌ нравится.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ LogFX выглядит Π² ΠΈΡ‚ΠΎΠ³Π΅ с Ρ‚Π΅ΠΌΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΠΊΠ½ΠΎΠΏΠΎΠΊ я использовал ΠΈΠΊΠΎΠ½ΠΊΠΈ FontAwesome. Π‘Ρ‹Π»ΠΎ довольно просто ΡΡ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² CSS. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚ устанавливался ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ инструкции:

Π‘ кастомными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ стилСй ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ прилоТСния. НапримСр, Π²ΠΎΡ‚ ΠΎΡ‡Π΅Π½ΡŒ зСлёная Ρ‚Π΅ΠΌΠ° Π² Linux Mint:

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Π₯отя Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ вкус Π°Π²Ρ‚ΠΎΡ€Π° этой Π·Π΅Π»Ρ‘Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ ΠΏΠΎΠ΄ вопросом, ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности стилизации Π² JavaFX. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ практичСски всё, Π½Π° Ρ‡Ρ‚ΠΎ способно вашС Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ классныС эффСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² JavaFX… Π― Ρ…ΠΎΡ‚Π΅Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ экран, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ выглядСл просто с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом.

Π’ JavaFX это дСлаСтся просто. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ (я сдСлал экран Π½Π° основС ΠΎΠ±Ρ€Π°Π·Ρ†Π° GroovyFX):

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

И Π²ΠΎΡ‚ какая Ρ‚Π°Π±Π»ΠΈΡ†Π° стилСй соотвСтствуСт этому стартовому экрану:

Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ созданиС ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΡ… эффСктов. Для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. руководство.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… обсудим, ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΈΠ΄Ρ‹ (экраны), ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π»Π΅Ρ‚Ρƒ (hot reload) ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”ΠΈΠ·Π°ΠΉΠ½, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ΄Π°

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±Π΅Π· возмоТности ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ измСнСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ любого Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° UI являСтся «горячая» ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ нСкая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ конструктора UI.

Π£ JavaFX (ΠΈ Ρƒ самой JVM) Π΅ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

SceneBuilder

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… β€” это SceneBuilder, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ конструктор UI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ FXML, просто пСрСтаскивая ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ UI.

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π»ΡŽΠ±Ρ‹Π΅ Java IDE, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС Π½ΠΎΠ²Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² (экранов).

МнС Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SceneBuilder для создания Ρ„ΠΎΡ€ΠΌ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… слоТных Π²ΠΈΠ΄ΠΎΠ², Π½ΠΎ я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ просто набрасывал Ρ‚Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎ-быстрому, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ для привСдСния Π΅Π³ΠΎ ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ.

Если Π²Ρ‹ Ρ‚Π°ΠΊ сдСлаСтС, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π²ΠΈΠ΄ Π² SceneBuilder, ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π² SceneBuilder β€” ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ScenicView

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ вас Π³ΠΎΡ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ScenicView для просмотра ΠΈ рСдактирования Π³Ρ€Π°Ρ„Π° сцСны ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ это ΠΊΠ°ΠΊ эквивалСнт инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ScenicView позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡƒΠ·Π»Ρ‹, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ события ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Javadocs для Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… элСмСнтов.

Горячая ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ΄Π° JVM

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ связан с UI, Ρ‚ΠΎ длоя этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Java с горячСй Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. Базовая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° имССтся Π² Oracle JVM ΠΈ HotSpot. Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ ΠΈ Π² OpenJDK JVM.

Однако базовая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°: Π²Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π—Π°Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ HotSpot VM ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ DCEVM (Dynamic Code Evolution VM) с Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ классов, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΡƒΠΆΠ΅ писал ΠΎ Π½Ρ‘ΠΌ ΠΈ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… способах ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ JVM.

Π― использовал это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ LogFX β€” ΠΈ ΠΎΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ сСбя проявило. Если Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, Ρ‚ΠΎ Π²ΠΈΠ΄ Π½Π΅ мСняСтся автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ это Π½Π΅ такая большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ссли ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Stage… ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ UI, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ScenicView ΠΈΠ»ΠΈ просто Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ScenicBuilder ΠΈ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½.

Для запуска DCEVM Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΡΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ JVM. ПослС этого ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСтся с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ β€” ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС пСрСкомпиляции Π² IDE Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ автоматичСски подгрузится Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’ IntelliJ послС измСнСния класса ΠΈ пСрСкомпиляции Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ (Cmd+F9 Π½Π° Β«ΠΌΠ°ΠΊΠ΅Β»):

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows

ОбновлСниС Ρ‚Π°Π±Π»ΠΈΡ† стилСй

JavaFX Π½Π΅ обновляСт автоматичСски Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй. Но для LogFX я Ρ…ΠΎΡ‚Π΅Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ стили β€” ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ эффСкт Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Но ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли стили ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π° Π½Π΅ ΠΈΠ· самого прилоТСния (ΠΈΠ· jar).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΡƒΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ стилСй, Ρ‚ΠΎ это Π½Π΅ стало ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Π― использовал эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ впСчатляСт. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° такая ΠΆΠ΅ Ρ„ΠΈΡ‡Π°, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный диспСтчСр Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΎΠ½ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ исходниками).

Для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»Π° (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ рСсурса jar), ΠΊ соТалСнию, придётся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ синтаксис ΠΏΠΎΠ΄ Unix/Mac ΠΈ Windows. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ я ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Mac, Windows ΠΈ Linux Mint. Но это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ОБ (вторая β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ отобраТаСтся ΠΈΠΊΠΎΠ½ΠΊΠ° Π² систСмном Ρ‚Ρ€Π΅Π΅ Π½Π° Mac, хотя Π΅ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²ΠΎΠ΅ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹). Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ JavaFX всё абстрагируСт довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎ большСй части.

НаконСц, ΠΊΠΎΠ³Π΄Π° диспСтчСр ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ стилСй, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ, просто ΡƒΠ΄Π°Π»ΠΈΠ² Π΅Π³ΠΎ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ:

Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ сами Π΅Π³ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‚ΠΎ ScenicView Ρ‚ΠΎΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… (Π½ΠΎ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ jar), ΠΈ TornadoFX Ρ‚ΠΎΠΆΠ΅ это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния Π½Π° JavaFX стало довольно приятным ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. Π£ мСня имСлась нСкоторая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° написания JavaFX-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ (ΠΊΠΎΠ³Π΄Π° JavaFX находился Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии развития, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ Π±Ρ‹Π»Π° нСкая фора… Π½ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠ°ΠΊ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Ρ‘Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-стСк вмСсто Ρ‚Π°ΠΊΠΎΠΉ вмСняСмой срСды ΠΊΠ°ΠΊ JVM.

Π‘ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ LogFX, Π½Π° ΠΌΠΎΠΉ взгляд, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΈ ΠΎΠ½ΠΎ достигло поставлСнных Ρ†Π΅Π»Π΅ΠΉ ΠΏΠΎ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ быстрому ΠΎΡ‚ΠΊΠ»ΠΈΠΊΡƒ, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ выглядит Π½Π° всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Π±Π΅Π· внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, посмотритС сами ΠΈ выскаТитС свой ΠΌΠ½Π΅Π½ΠΈΠ΅:

Π₯отя это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ„Π°ΠΉΠ» jar вСсит всСго 303 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°. Π­Ρ‚ΠΎ 0,3 ΠœΠ‘, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ нСсколько ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ» ΡˆΡ€ΠΈΡ„Ρ‚Π° TTF, ΠΈ Π΅Ρ‰Ρ‘ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² HTML ΠΈ CSS, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² классов Java!

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ саму Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ JVM, Π½ΠΎ JVM Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ! Π’ Java 9 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π² Π½ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ части JVM, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли вашим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π΅ нравится простой jar, Ρ‚ΠΎ ΡƒΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ я ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ (нСбольшоС Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JVM Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 35 ΠœΠ‘ ΠΈΠ»ΠΈ 21 ΠœΠ‘ послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ).

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ LogFX трСбуСтся ΠΎΠΊΠΎΠ»ΠΎ 50 ΠœΠ‘ RAM (Π½Π΅ для самого прилоТСния, Π° Π² основном для JavaFX). Π’ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Π­Ρ‚ΠΎ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Electron, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΆΡ€ΡƒΡ‚ 200 ΠœΠ‘ ΡƒΠΆΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запуска.

JavaFX Π½Π΅ идСальна ΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ областСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всё Π΅Ρ‰Ρ‘ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ. Одна ΠΈΠ· Π½ΠΈΡ… β€” распространСниС ΠΈ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, JNLP ΠΈ Java WebStart, каТСтся слабо Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, хотя ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΎΡ‚ сообщСства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Getdown ΠΈ FxLauncher, Π° Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ инсталлятор, Ρ‚ΠΎ имССтся ΠΈ коммСрчСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Install4J (кстати, Ρƒ Install4J Π΅ΡΡ‚ΡŒ бСсплатныС Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² open source).

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅Ρ‰Π΅ΠΉ насчёт JavaFX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ мСня Π½Π΅ нашлось Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π² этой ΠΈ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, достойны Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния, Ссли Π²Π°ΠΌ интСрСсно:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

GUI Π½Π° Java

Abstract Window Toolkit

Π₯Π°ΠΊΠ΅Ρ€ #183. ΠœΠ°Π»Π²Π°Ρ€ΡŒ для Android

AWT Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ Sun ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ графичСский интСрфСйс для Java. Они пошли Π»Π΅Π³ΠΊΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΈ просто сдСлали прослойку Π½Π° Java, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, написанных Π½Π° Π‘. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ графичСскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Java ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ОБ. Но с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ различия Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ… Π½Π΅ испортят внСшний Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ запускС Π΅Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡ€Π΅Π·Π°Π½Π½ΠΎΠΉ. Π”Π° ΠΈ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² получился довольно нСбольшой. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² AWT Π½Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†, Π° Π² ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… Π½Π΅ поддСрТиваСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΎΠΊ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ рСсурсы AWT стараСтся ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ автоматичСски. Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТняСт Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠžΡΠ²ΠΎΠΈΡ‚ΡŒ AWT довольно просто, Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ слоТноС Π±ΡƒΠ΄Π΅Ρ‚ нСсколько Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. БСйчас Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ для Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ².

Достоинства:

НСдостатки:

Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π’ настоящСС врСмя AWT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ β€” Π² основном Π² старых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°Ρ…. Oracle припрятал ΠΎΠ±ΡƒΡ‡Π°Π»ΠΊΠΈ ΠΈ всячСски поощряСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Swing. Оно ΠΈ понятно, прямой доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ оси ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π΄Ρ‹Ρ€ΠΎΠΉ Π² бСзопасности.

Swing

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows Как выглядит Swing

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ благодаря простотС использования, Π±ΠΎΠ³Π°Ρ‚ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ гибкости ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Swing стал, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самым популярным графичСским Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ Π² Java. На Π΅Π³ΠΎ Π±Π°Π·Π΅ появилось ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SwingX, JGoodies, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ созданиС слоТных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС популярныС срСды программирования Java Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ графичСскиС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ для Swing-Ρ„ΠΎΡ€ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Swing Π½Π΅ составит особого Ρ‚Ρ€ΡƒΠ΄Π°.

Достоинства:

НСдостатки:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Swing ΠΆΠΈΠ», Swing ΠΆΠΈΠ², Swing Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠΈΡ‚ΡŒ. Π₯отя Oracle ΠΈ стараСтся ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ JavaFX, Π½Π° сСгодняшний дСнь Swing остаСтся самым популярным Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов Π½Π° Java.

Standard Widget Toolkit

SWT Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ IBM Π² Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° Swing Π΅Ρ‰Π΅ Π±Ρ‹Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ, ΠΈ сдСлано это Π±Ρ‹Π»ΠΎ Π² основном для продвиТСния срСды программирования Eclipse. SWT, ΠΊΠ°ΠΊ ΠΈ AWT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρƒ Π½Π΅Π³ΠΎ созданы свои интСрфСйсы взаимодСйствия. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ систСмы Ρ‚Π΅Π±Π΅ придСтся ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ JAR-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с подходящСй вСрсиСй SWT. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ оси. ΠΠ΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 2D, ΠΊΠ°ΠΊ Π² Swing. Π£ SWT Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Π΅Π², Π½ΠΎ, ΠΏΠΎΠ»ΠΎΠΆΠ° Ρ€ΡƒΠΊΡƒ Π½Π° сСрдцС, нСльзя Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π΅ Ρ‚Π°ΠΊ всС просто, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹. Новичку придСтся Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ SWT Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π° знакомство с Ρ‚Π΅ΠΌ ΠΆΠ΅ Swing. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, SWT Π²ΠΎΠ·Π»Π°Π³Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ освобоТдСния рСсурсов Π½Π° программиста, Π² связи с Ρ‡Π΅ΠΌ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ особСнно Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти.

Достоинства:

НСдостатки:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² IBM ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ. Но ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΡƒΠΆ ΠΎΡ‡Π΅Π½ΡŒ Π½Π° Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρβ€¦

JavaFX

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows Как выглядит JavaFX

JavaFX ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· прСувСличСния Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ€Ρ‹Π²ΠΎΠΌ. Для отрисовки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ графичСский ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния. Набор встроСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΠ±ΡˆΠΈΡ€Π΅Π½, Π΅ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для отрисовки Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, мноТСства эффСктов отобраТСния, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‚Π°Ρ‡. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS-стилСй. И самоС прСкрасноС β€” Π² JavaFX Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π°Π±ΠΎΡ€ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄Π½ΠΎΠΉ инсталлятор для самых популярных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ: exe ΠΈΠ»ΠΈ msi для Windows, deb ΠΈΠ»ΠΈ rpm для Linux, dmg для Mac. На сайтС Oracle ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с JavaFX Π² Π»Π΅Π³ΠΊΠΎΠ΅ ΠΈ приятноС занятиС.

Достоинства:

НСдостатки:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π°, Oracle. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ оставляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ впСчатлСния. Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ нСслоТно, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ интСрфСйсы выглядят Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ. Π₯очСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ снова ΠΈ снова!

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

SWT: ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚

Для дСмонстрации возмоТностСй Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ сдСлаСм нСсколько Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

И Π½Π°Ρ‡Π½Π΅ΠΌ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, с самого популярного Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° β€” отобраТСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ³ΠΎΠ΄Ρ‹, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ SWT.

Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° SWT начинаСтся с создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Display. Он слуТит своСобразным контСкстом прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для обращСния ΠΊ рСсурсам систСмы ΠΈ обСспСчиваСт Ρ†ΠΈΠΊΠ» событий. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Shell. Shell прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ конструктор shell пСрСдаСтся Display, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ создаСм Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ стандартноС ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ управлСния, для этого ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ„Π»Π°Π³ NO_TRIM. Для Ρ„ΠΎΠ½Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ β€” ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с Π·Π°ΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΎΠΊΠ½ΠΎ SWT ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ эффСкта, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс Region. ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² этот класс всС Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Ρ„ΠΎΠ½Π°, пропуская ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅.

Π’ изобраТСниях Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ задаСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, поэтому ΠΈ извлСкаСтся информация ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… областях Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ„ΠΎΠ½Π° ΠΈ добавляСм Ρ‚ΡƒΠ΄Π° всС Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

УстанавливаСм Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠΊΠ½Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ событий для ΠΎΠΊΠ½Π°. Нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ события рисования ΠΎΠΊΠ½Π°, события ΠΌΡ‹ΡˆΠΈ ΠΈ наТатия клавиш, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΏΠΎ экрану.

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Esc ΠΎΠΊΠ½ΠΎ закроСтся. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π»Π΅Π²ΠΎΠΉ клавиши ΠΌΡ‹ΡˆΠΈ Π½Π° области ΠΎΠΊΠ½Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ наТатия. ΠŸΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ΡˆΠΈ с Π·Π°ΠΆΠ°Ρ‚ΠΎΠΉ Π»Π΅Π²ΠΎΠΉ клавишСй β€” ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π½Π° экранС соотвСтствСнно двиТСнию. ΠŸΡ€ΠΈ событии пСрСрисовки β€” рисуСм ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ„ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ графичСский контСкст GC.

Назначим ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ событиям ΠΎΠΊΠ½Π°:

УстанавливаСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ изобраТСния:

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ ΠΈ запускаСм Ρ†ΠΈΠΊΠ» событий:

НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ рСсурсы:

Запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° этом этапС, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΌΡ‹ΡˆΠΊΠΎΠΉ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ Esc.

Настало врСмя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ содСрТания. Π‘ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ Π² Π²ΠΈΠ΄Π΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ состояния (солнСчно, доТдь, снСг…), ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСго обновлСния.

Для располоТСния графичСских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² ΠΎΠΊΠ½Π΅ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ занимаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ располоТСниСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°. Для нашСго Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GridLayout. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ располагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ячСйках Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ GridBagLayout Π½Π° Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (Ρ„Π»Π°Π³ false Π² конструкторС), устанавливаСм Π΅Π³ΠΎ Π² качСствС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠΊΠ½Π°:

Для ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ статуса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Label. Π’ качСствС родитСля ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΊΠ½Π°. Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π°Π±ΠΎΡ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² стиля Ρ€Π°Π·Π½Ρ‹ΠΉ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ прямо Π² исходниках ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π€Π»Π°Π³ΠΈ Π² классС GridData ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ слСва Π²Π²Π΅Ρ€Ρ…Ρƒ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ (Ρ„Π»Π°Π³ΠΈ, установлСнныС Π² true) ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ свободного мСста ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ строку ΠΈ ΠΎΠ΄ΠΈΠ½ столбСц Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ.

Π’ SWT Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ ΠΏΠΎΠ·Π°Π΄ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ статуса Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€Π°ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π»Ρ‹ΠΉ Ρ„ΠΎΠ½, Ρ‡Π΅Π³ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Color с Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π° ΠΎΠΊΠ½Π°:

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ dispose. УстанавливаСм Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ статуса, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ„ΠΎΠ½Π° Π²Π½Π°Ρ‡Π°Π»Π΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Label с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ располоТим Π΅Π³ΠΎ Π² ΠΏΡ€Π°Π²ΠΎΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π°:

Установим ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ:

Для записи Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎ ЦСльсию ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡŽΠ½ΠΈΠΊΠΎΠ΄Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ символа со слуТСбными символами \u.

Π¨Ρ€ΠΈΡ„Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для тСкстовых ΠΌΠ΅Ρ‚ΠΎΠΊ слишком малСнький. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ создадим Π½ΠΎΠ²Ρ‹ΠΉ, побольшС:

FontData[] fD = temperatureLabel.getFont().getFontData(); fD[0].setHeight(30); fD[0].setStyle(SWT.BOLD); Font newFont = new Font(display, fD[0]); temperatureLabel.setFont(newFont); Π¨Ρ€ΠΈΡ„Ρ‚, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рСсурсныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ. Для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΌ события Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΊΠΈ:

НаконСц, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ с описаниСм ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Ρ… условий:

ВСкст ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании ΠΌΠ΅Ρ‚ΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„Π»Π°Π³ WRAP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСкст автоматичСски разбивался Π½Π° нСсколько строк ΠΏΡ€ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ мСста. РасполоТим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ Π΅ΠΌΡƒ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ пространство. Π’Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° столбца Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ЗапускаСм ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ окошко с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Β«Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΏΠΎΠ³ΠΎΠ΄Ρ‹Β».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сСрвис ΠΏΠΎΠ³ΠΎΠ΄Ρ‹, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ для автоматичСского обновлСния β€” ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ².

Swing: всСгда свСТиС новости

На Swing ΠΌΡ‹ напишСм Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ для отобраТСния RSS-новостСй. НачинаСм, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π·, с создания ΠΎΠΊΠ½Π°. Класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» стандартного ΠΎΠΊΠ½Π° Π² Swing, называСтся JFrame. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π° прилоТСния Π² Swing Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ остановкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ сСбя вСсти ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ:

Для прСдставлСния новостСй Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°. Swing построСн Π½Π° ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ «МодСль —прСдставлСниС β€” ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Β» (MVC). Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ MVC модСль прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅, прСдставлСниС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкст, поля Π²Π²ΠΎΠ΄Π°), Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ обСспСчиваСт взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ модСлью ΠΈ прСдставлСниСм. Π’Π°Π±Π»ΠΈΡ†Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Для прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс TableModel.

Для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ доступных новостях Π·Π°Π²Π΅Π΄Π΅ΠΌ класс FeedMessage c полями для названия ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ Π΄Π°Ρ‚Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π°:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, наслСдуСм Π½Π°ΡˆΡƒ модСль Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ класса AbstractTableModel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² интСрфСйса TableModel.

ΠœΠ΅Ρ‚ΠΎΠ΄ fireTableDataChanged сообщаСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ модСль Π΄Π°Π½Π½Ρ‹Ρ… измСнилась ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° пСрСрисовка.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ измСняСм Π΅Π΅ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° большС ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Π£Π±ΠΈΡ€Π°Π΅ΠΌ Π»ΠΈΠ½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ строками ΠΈ столбцами, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ высоту строки ΠΈ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с названиями ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ займСмся внСшним Π²ΠΈΠ΄ΠΎΠΌ ячССк. Swing позволяСт Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ классы прСдставлСния для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π° отрисовку ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ячССк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс TableCellRenderer. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DefaultTableCellRenderer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ.

Назначим свой отрисовщик ячСйки для Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° String. ИзмСним стандартный Ρ†Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ сдСлаСм Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉΡΡ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наш отрисовщик, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки, Π² модСль Π΄Π°Π½Π½Ρ‹Ρ…:

НовостСй ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, поэтому помСстим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° панСль ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΈ сдСлаСм ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ ΠΏΠΎΡ€Ρ‚ΠΈΠ» Π½Π°ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°:

ДобавляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ панСль ΠΎΠΊΠ½Π°. Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ главная панСль ΠΎΠΊΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ BorderLayout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ сторонам свСта. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΎΠΉ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅.

Как ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π·, ΡƒΠ±Π΅Ρ€Π΅ΠΌ стандартноС ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°. А Π² качСствС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ размСстим Π²Π²Π΅Ρ€Ρ…Ρƒ ΠΎΠΊΠ½Π°.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ SWT, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Β«Ρ†Π²Π΅Ρ‚Β» ΠΈ Β«ΡˆΡ€ΠΈΡ„Ρ‚Β» ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ автоматичСски, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ большС Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π·Π° ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти.

ДобавляСм ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ ΠΌΡ‹ΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΏΠΎ экрану.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ помСняСм Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠΊΠ½Π° Π½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с Π·Π°ΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ. Π›ΡƒΡ‡ΡˆΠ΅ всСго это Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° измСнится, Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΊΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ пСрСсчитана:

УстанавливаСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π°, ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ.

НаконСц, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π² графичСском ΠΏΠΎΡ‚ΠΎΠΊΠ΅. SwingUtilities.invokeLater(new Runnable() < public void run() < frame.setVisible(true); >>);

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ с послСдними новостями Ρ‚Π²ΠΎΠ΅Π³ΠΎ любимого ΠΆΡƒΡ€Π½Π°Π»Π° :).

JavaFX: ΠΏΠΎΡΠ»ΡƒΡˆΠ°Π΅ΠΌ ΠΌΡƒΠ·Ρ‹Ρ‡ΠΊΡƒ

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, гвоздь сСзона β€” JavaFX. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΅Π³ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌΠΈ возмоТностями ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ сдСлаСм ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ эквалайзСр.

Для Π½Π°Ρ‡Π°Π»Π° наслСдуСм класс Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΎΡ‚ Application. Π­Ρ‚ΠΎ основной класс прилоТСния Π² JavaFX. Application содСрТит основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° прилоТСния. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ start, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ слуТит класс Stage. Stage прСдставляСт собой ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ИзмСним ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠΊΠ½Π° Π½Π° TRANSPARENT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’ Stage помСщаСтся класс Scene, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° ΠΈ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°. Π’ Scene, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ класс Group, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

Для отобраТСния эквалайзСра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΡ‚ΠΎΠ»Π±ΠΈΠΊΠΎΠ²ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠΎ осям ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ частоту ΠΈ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠ°:

ЗаполняСм Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с Π·Π°ΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

ДобавляСм ΠΎΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅:

НазначаСм ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΡ‹ΡˆΠΈ ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΠΏΠΎ экрану:

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ пСсню Π² ΠΏΠ»Π΅Π΅Ρ€:

ДобавляСм ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΡΡ‚ΠΎΠ»Π±ΠΈΠΊΠΎΠ²ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ:

Π”Π΅Π»Π°Π΅ΠΌ сцСну Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΈ запускаСм пСсню:

И наслаТдаСмся Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΡ‚ красотой.

ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с gui Π½Π° java ΠΏΠΎΠ΄ windows ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ эквалайзСр

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как видишь, остаСтся всС мСньшС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄ силу Java. ΠšΡ€ΠΎΠΌΠ΅ описанных графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π΅ Ρ‚Π°ΠΊΠΈΡ… распространСнных, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΡƒΠ΄ΡˆΠΈΡ… ΠΏΠΎ качСству. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны. Java прСдоставляСт ΠΏΡ€Π°Π²ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π΅Π±Π΅ :).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *