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

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

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

Π’ рассматриваСмом здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ задаСтся ΡˆΠΈΡ€ΠΈΠ½Π° ΠΎΠΊΠ½Π° β€” 215 пиксСлСй ΠΈ высота β€” 100 пиксСлСй.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня закрываСтся (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΡƒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² Π΅Π³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ), ΠΎΠ½ΠΎ удаляСтся с экрана, Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π½Π° этом свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. И хотя Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуаций, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ. Π’Π΅Π΄ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΠΎΡΡŒ. И Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами. Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈΠ· Π½ΠΈΡ… состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setDefaultCloseOperation (). ИмСнно Ρ‚Π°ΠΊΠΎΠΉ способ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Π² Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ПослС выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСго прилоТСния. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°setDefaultCloseOperation().void setDefaultCloseOperation(int what)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° what, опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π°. Помимо константы JFrame.EXIT_0NJ3L0SE, Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ константы.JFrame.DISPOSE_ON_CLOSEJFrame.HIDE_ON_CLOSEJFrame.DO_NOTHING_ON_CLOSE

ИмСна констант ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ, ΡΠΊΡ€Ρ‹Ρ‚ΡŒ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ послС закрытия ΠΎΠΊΠ½Π° соотвСтствСнно. ВсС ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² интСрфСйсС WindowConstants, входящСм Π² ΠΏΠ°ΠΊΠ΅Ρ‚ javax. swing. Π­Ρ‚ΠΎΡ‚ интСрфСйс рСализуСтся Π² классС JFrame.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° создаСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ JLabel ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swing:JLabel jlab = new JLabel(" Swing defines the modern Java GUI.");

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ JLabel β€” самый простой Π² использовании срСди всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Swing, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий, связанных с дСйствиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ: тСкст, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠœΠ΅Ρ‚ΠΊΠ°, созданная Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст. А строка, содСрТащая этот тСкст, пСрСдаСтся конструктору класса JLabel.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΊΠ° вводится Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого Ρ€Π°ΠΌΠΊΠΈ ΠΎΠΊΠ½Π°:jfrm.add(jlab);

Как пояснялось Ρ€Π°Π½Π΅Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя панСль содСрТимого, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°ΠΌΠΊΠΈ ΠΎΠΊΠ½Π° Π΅Π³ΠΎ слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого. Π‘ этой Ρ†Π΅Π»ΡŒΡŽ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ add() ΠΈΠ· класса JFrame (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° JFrame содСрТится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ j frm). БущСствуСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° add (). Π§Π°Ρ‰Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:Component add(Component ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚)

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ содСрТимого, связанной с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ JFrame, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ диспСтчСр ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ BorderLayout. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° add () ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” ΠΌΠ΅Ρ‚ΠΊΠ°) располагаСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ области. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ add (), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… областях. ΠŸΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ области Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° автоматичСски приводятся ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ этой области.

И послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² конструкторС класса SwingDemo обСспСчиваСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.jfrm.setVisible(true) ;

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setVisible () выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:void setVisible(boolean Ρ„Π»Π°Π³)

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„Π»Π°Π³ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, ΠΎΠΊΠ½ΠΎ отобраТаСтся Π½Π° экранС, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ остаСтся скрытым. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°ΠΌΠΊΡƒ ΠΎΠΊΠ½Π° (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° JFrame) Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ, поэтому для Π΅Π΅ отобраТСния трСбуСтся Π²Ρ‹Π·ΠΎΠ²setVisible(true).

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main () создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса SwingDemo, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° экранС. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса SwingDemo вызываСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°:SwingUtilities.invokeLater(new Runnable() { public void run() { new SwingDemo(); }});

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

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ построСния графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ диспСтчСризации событий, слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² классС SwingUtilities: invokeLater () ΠΈΠ»ΠΈ invokeAndWait (). Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:static void invokeLater(Runnable obj)static void invokeAndWait(Runnable obj) throws InterruptedException, InvocationTargetException

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ obj ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Runnable, ΠΌΠ΅Ρ‚ΠΎΠ΄ run () ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вызываСтся Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ диспСтчСризации событий. Оба упомянутых Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ invokeLater () сразу ΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ invokeAndWait () ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° obj . run (). Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ построСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Swing-прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС этого интСрфСйса ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° диспСтчСризации событий. Для этой Ρ†Π΅Π»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ invokeLater (), Ρ‡Ρ‚ΠΎ ΠΈ Π±Ρ‹Π»ΠΎ сдСлано Π² рассматриваСмом здСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Но ΠΏΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ invokeAndWait (). (О создании Swing-Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.)

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΎΠ½Π° Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ JLabel Π½Π΅ прСдусмотрСны ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ срСдства. Π˜Π½Ρ‹ΠΌΠΈ словами, Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΈ прСдусмотрСны ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ JLabel Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ события. А всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Swing Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ события, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ продСмонстрировано Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π΄Π°Π»Π΅Π΅ Π² Π³Π»Π°Π²Π΅.ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° JButton

Кнопка являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Swing. НаТимаСмая ΠΊΠ½ΠΎΠΏΠΊΠ° прСдставлСна Π² Swing экзСмпляром класса JButton. Π­Ρ‚ΠΎΡ‚ класс являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΎΡ‚ абстрактного класса AbstractButton, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΊΠ½ΠΎΠΏΠΎΠΊ. На ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ тСкст надписи, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½ΠΎ здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ с тСкстовыми надписями.

Класс JButton содСрТит Ρ‚Ρ€ΠΈ конструктора. Один ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:JButton(String сообщСниС)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сообщСниС опрСдСляСт ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ надписи Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅.

ПослС Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ формируСтся событиС ActionEvent. Класс ActionEvent ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ AWT, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Swing. Π’ классС JButton ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ событий ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ:void addActionListener(ActionListener al)void removeActionListener(ActionListener al)

Π³Π΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ al Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡ‚ΡŒΡΡ ΠΎ наступлСнии событий. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой экзСмпляр класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйс ActionListener.