Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Java: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… (Π›ΠŸ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 115

Автор Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚

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

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ прозрачная ΠΈ многослойная ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌΠΈ частями ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡ… дСйствия ΠΏΠΎ большСй части скрыты Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ ΠΈ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° взаимодСйствуСт Π² основном с панСлью содСрТимого, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π˜Π½Ρ‹ΠΌΠΈ словами, добавляякомпонСнт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅Π΅Π³ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого.ДиспСтчСры ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ написанию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ срСдствами Swing, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС хотя Π±Ρ‹ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ диспСтчСрах ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ДиспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ управляСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. Π’ Java ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ нСсколько Ρ‚Π°ΠΊΠΈΡ… диспСтчСров. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав AWT (Ρ‚.Π΅. Π² ΠΏΠ°ΠΊΠ΅Ρ‚ j ava. awt), Π½ΠΎ Π² Swing Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСтся ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… диспСтчСров ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ВсС диспСтчСры ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… интСрфСйс LayoutManager. (НСкоторыС ΠΈΠ· диспСтчСров ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйс LayoutManager2.) НиТС пСрСчислСн ряд диспСтчСров ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, доступных для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…ΡΡ срСдствами Swing.FlowLayoutΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎΠΈ свСрху Π²Π½ΠΈΠ·. (Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… настроСк ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ справа Π½Π°Π»Π΅Π²ΠΎ.)BorderLayoutРасполагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΈ ΠΏΠΎ краям ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π­Ρ‚ΠΎΡ‚ диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ принимаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимогоGridLayoutРасполагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ сСткой, ΠΊΠ°ΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅GridBagLayoutРасполагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² настраиваСмой сСткой, ΠΊΠ°ΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅BoxLayoutРасполагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Π±Π»ΠΎΠΊΠ΅ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈSpringLayoutРасполагаСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ряда ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

ДиспСтчСры ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Swing, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Π²ΠΎ всСх подробностях Π² ΠΎΠ΄Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ограничимся рассмотрСниСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… ΠΈΠ· Π½ΠΈΡ…: BorderLayout ΠΈ FlowLayout.

Для ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ принимаСтся диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ BorderLayout. Π­Ρ‚ΠΎΡ‚ диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ опрСдСляСт Π² составС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΡΡ‚ΡŒ областСй, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ располагаСтся посрСдинС ΠΈ называСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎ сторонам свСта ΠΈ соотвСтствСнно Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сСвСрной, юТной, восточной ΠΈ Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΉ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, добавляСмый Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого, располагаСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ области. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ области, слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΅ имя.

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ возмоТностСй, прСдоставляСмых диспСтчСром ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ BorderLayout, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ оказываСтся достаточно, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… диспСтчСрах ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. К числу самых простых относится диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ FlowLayout. Он Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ построчно: слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ свСрху Π²Π½ΠΈΠ·. Π—Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ строку, этот диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Вакая ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° прСдоставляСт лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ располоТСниСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², хотя ΠΈ проста Π² ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ. Однако ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° располоТСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.ΠŸΠ΅Ρ€Π²Π°Ρ простая Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, создаваСмыС срСдствами Swing, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² дальнСйшСм для краткости Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ рассмотрСны Ρ€Π°Π½Π΅Π΅ Π² этой ΠΊΠ½ΠΈΠ³Π΅. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΡ‚ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ², создаваСмых Π½Π° основС AWT ΠΈ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠΈΡ…ΡΡ Π² Π³Π»Π°Π²Π΅ 14. Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ просто Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Swing, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½ΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ особым трСбованиям, связанным с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ стала понятнСС структура Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Swing, ΠΌΠΎΠΆΠ½ΠΎ условно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. К ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ относятся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ прилоТСниями, Π° ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ β€”Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаСтся Swing-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. А созданиС Swing-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно Π΄Π°Π»Π΅Π΅ Π² Π³Π»Π°Π²Π΅.

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ рассматриваСмый здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ довольно прост, ΠΎΠ½ наглядно дСмонстрируСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² написания Swing-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Swing: классы JFrame ΠΈ JLabel. Класс JFrame прСдставляСт собой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ примСняСмый Π² Swing- прилоТСниях, Π° класс JLabel β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Swing, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся ΠΌΠ΅Ρ‚ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠœΠ΅Ρ‚ΠΊΠ° являСтся самым простым ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Swing, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ JFrame слуТит для размСщСния экзСмпляра ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° JLabel. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΊΠΈ отобраТаСтся ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ тСкстовоС сообщСниС.// ΠŸΡ€ΠΎΡΡ‚Π°Ρ Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.// Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ импортируСтся ΠΏΠ°ΠΊΠ΅Ρ‚ javax.swing.import javax.swing.*;class SwingDemo { SwingDemo() { // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° JFrame. JFrame jfrm = new JFrame("A Simple Swing Application"); // Установка Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°ΠΌΠΊΠΈ ΠΎΠΊΠ½Π°. jfrm.setSize(275, 100); // ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ. jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСкстовой ΠΌΠ΅Ρ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Swing. JLabel jlab = new JLabel(" Swing defines the modern Java GUI."); // Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого. jfrm.add(jlab); // ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΠΌΠΊΠΈ ΠΎΠΊΠ½Π°. jfrm.setVisible(true); } public static void main(String args[]) { // ΠžΠ±ΡŠΠ΅ΠΊΡ‚ SwingDemo Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ // диспСтчСризации событий. SwingUtilities.invokeLater(new Runnable() { public void run() { new SwingDemo(); } }) ; }}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° компилируСтся ΠΈ запускаСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для Π΅Π΅ компиляции Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½ΡƒΠΆΠ½ΠΎ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:javac SwingDemo1.java

А для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½ΡƒΠΆΠ½ΠΎ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:java SwingDemol

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ отобраТаСтся ΠΎΠΊΠ½ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π° рис. 15.1.

Java: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… (Π›ΠŸ) - _8.jpg

Рис. 15.1. Окно, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ SwingDemoΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ Swing-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ SwingDemo дСмонстрируСт основныС понятия Swing, поэтому ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, ΡƒΠ΄Π΅Π»ΠΈΠ² Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.import javax.swing.*;

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ содСрТит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Swing. Π’ частности, Π² Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ классы, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, поля Π²Π²ΠΎΠ΄Π° тСкста ΠΈ мСню. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Swing.

Π”Π°Π»Π΅Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ класс SwingDemo ΠΈ Π΅Π³ΠΎ конструктор. ИмСнно Π² конструкторС выполняСтся большая Ρ‡Π°ΡΡ‚ΡŒ дСйствий этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Код конструктора начинаСтся с создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° JFrame. Для этой Ρ†Π΅Π»ΠΈ слуТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ΠΊΠΎΠ΄Π°:JFrame jfrm = new JFrame("A Simple Swing Application.");

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ jfrm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, содСрТащСС строку Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для закрытия, сворачивания, разворачивания ΠΈ восстановлСния Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ систСмноС мСню. Π˜Π½Ρ‹ΠΌΠΈ словами, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ строкС ΠΊΠΎΠ΄Π° создаСтся стандартноС ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π° строка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° пСрСдаСтся конструктору Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π”Π°Π»Π΅Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° Π² пиксСлях, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅,jfrm.setSize(275, 100);

Для этой Ρ†Π΅Π»ΠΈ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ setSize (). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° объявлСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.void setSize(int ΡˆΠΈΡ€ΠΈΠ½Π°, int высота)