Гэр / Нийгмийн сүлжээ / Java хэл дээр график интерфэйс үүсгэх. Java Графикийн сангууд дээр график интерфэйс үүсгэх нь Java програм дээр интерфэйсийг хэрхэн үүсгэх

Java хэл дээр график интерфэйс үүсгэх. Java Графикийн сангууд дээр график интерфэйс үүсгэх нь Java програм дээр интерфэйсийг хэрхэн үүсгэх

Энэхүү богино өгүүлэлд би хэлээр GUI-г дэмждэг жижиг программ үүсгэх үйл явцыг тайлбарлахыг хүсч байна Java. Уншигч тухайн хэлний үндсийг мэддэг гэж үздэг. Java.

Тэгэхээр бидэнд ямар хэрэгсэл хэрэгтэй вэ:

  • Java виртуал машин (OpenJDK эсвэл Oracle JDK)
  • Intellij IDEA (эсвэл Java-д зориулсан өөр IDE)

Шаардлагатай програм хангамжийг суулгасны дараа нээнэ үү IntelliJ IDEAмөн шинэ төсөл үүсгэ: Файл -> Шинэ төсөл…

Би төслийг нэрлэсэн guiBase. Дэлгэцийн агшин дээрээс харж байгаагаар хавтас srcюу ч агуулаагүй тул бид үүнд функцийг агуулсан үндсэн ангиа үүсгэнэ гол.

Нийтийн анги Main ( public static void main(String args) ( System.out.println("Сайн уу, Говзалла!"); ) )

Дээрх үндсэн ангийн агуулгыг үзнэ үү. Бид одоо төсөл үүсгэж болно ( барих төсөл ) ба үүнийг ажиллуул ( Гүй ). Таны терминалын доод талд IDEта мессеж харах болно Сайн уу, Говзалла аа!. Гэхдээ та өөрөө ойлгосноор энэ нь GUI-г дэмждэггүй.

Энэ үе шатанд бид аль хэдийн ажиллаж байгаа програмтай байгаа боловч GUI дэмжлэггүй. Одоо нэг хавтсанд байна srcүүсгэх GUI маягт: Шинэ -> GUI маягт

Үүсгэсэн GUI маягтыг нээж, товшино уу jPanelталбарт түүний танигчийг тохируулна уу талбайн нэр, Би асуусан самбар.

Дараа нь баруун талд байгаа маягт руу чирж дарна уу JTextField, JPasswordFieldболон jТовчлуур:

Кодоо нэмж, маягтыг нь холбоход л үлддэг. Бид маягтыг нэмэх үед үндсэн цонх, анги автоматаар үүсгэгдсэн үндсэн цонх, энэ анги нь үүсгэсэн хэлбэрийн анги юм, i.e. Энэ анги нь өгөгдсөн хэлбэрийн бүх үйл явдалд үйлчлэх болно.

Хэдийгээр манай цонхны анги нь шаардлагатай элементүүдийг агуулж байгаа ч одоо ч энэ нь GUI-тэй ямар ч холбоогүй тул үүнийг өргөтгөцгөөе. jFrameмөн GUI-ийн үндсэн болон шаардлагатай бүх функцийг өвлөн авах .

AT Энэ мөчбидэнд хэлбэр бий үндсэн цонхболон анги үндсэн цонх-аар сунгасан jFrame. Одоо бид бүх нэмэлт GUI элементүүдийг ангийн агуулга гэж тодорхойлох хэрэгтэй үндсэн цонх this.getContentPane().add(самбар); Үүний дараа MainWindow.java файлын агуулга дараах байдлаар өөрчлөгдөнө.

javax.swing.* импортлох; нийтийн анги MainWindow нь JFrame ( хувийн JTextField textField1; private JPasswordField passwordField1; private JButton button1; private JPanel panel; public MainWindow() ( this.getContentPane().add(panel); ) )

Хэрэв та кодыг ажиллуулахыг оролдвол "Сайн уу, Говзалла!" гэсэн мессеж дахин гарч ирнэ. Гол нь бид анги болон түүний хэлбэрийг үүсгэсэн боловч энэ ангийн жишээг үүсгээгүй.

Main.java файлыг өөрчилж, тэнд GUI үүсгэх кодыг нэмэх цаг болжээ.

java.awt.* импортлох; public class Main ( public static void main(String args) ( // MainWindow классын жишээ үүсгэх MainWindow mainWindow = new MainWindow(); // Манай маягтын mainWindow.pack(); // Цонхны хэмжээг өөрчлөх mainWindow.setSize( new Dimension(200, 200)); // Үүсгэсэн цонхыг mainWindow харуулах. setVisible(true); ) )

Кодыг ажиллуулж байна

Товчлуур дээр дарснаар програм ямар ч хариу үйлдэл үзүүлэхгүй байгааг анзаарах болно. Хамгийн гол нь бид сонсогчийг хараахан нэмээгүй байна ( Сонсогч) үйл явдлын хувьд ( Үйл явдал) товчлуур.

үйл явдал сонсогч ( үйл явдлын сонсогч) jТовчлуурадаптерийн хэрэгжилт байх ёстой ActionListener, тиймээс ангийн үндсэн хэсэгт дараах кодыг нэмнэ үү үндсэн цонх:

MyButtonListener хувийн анги нь ActionListener-ийг хэрэгжүүлдэг ( @Override public void actionPerformed(ActionEvent actionEvent) ( ) )

Арга үйлдэл хийсэн() нь button1 товчлуурын бүх үйл явдлыг зохицуулах боловч эхлээд та button1-д ямар ангиудыг зохицуулахыг хэлэх шаардлагатай байгаа тул MainWIndow анги үүсгэгч дээр дараах кодыг нэмнэ үү: this.button1.addActionListener(new MyButtonListener()); Манай зохицуулагч утгагүй байхын тулд дараах кодыг аргад нэмнэ үү үйлдэл хийсэн():

@Override public void actionPerformed(ActionEvent actionEvent) ( if (textField1.getText().equals(passwordField1.getText())) ( JOptionPane.showMessageDialog(null, "Амжилт"); ) else ( JOptionPane.showMessageDialog(null) ");)))

Одоо хөтөлбөр нь бүх үйл явдалд биш, харин үйл явдалд зөв хариулах болно. Жишээлбэл, хэрэв та загалмай дээр дарж програмыг идэвхгүй болгохыг оролдвол цонх алга болно, гэхдээ програм ажиллах болно, учир нь. үндсэн цонхны үйл явдлын зохицуулагчийг нэмээгүй.

Давыдов Антон Валерьевич
ОХУ-ын Тольятти хотын СУИС-ийн оюутан
Шинжлэх ухааны зөвлөх: Ерофеева Е.А.

Java дахь хэрэглэгчийн интерфэйс нь үүсэх, хөгжүүлэх маш хэцүү замыг туулсан. Түүний урт хугацаандсистемийн нөөцөд шунасан гэж буруутгагдаж, удаан ажилболон хязгаарлагдмал ажиллагаатай. Илүү хурдан график бүрэлдэхүүн хэсгүүдтэй .NET гарч ирснээр Java-ийн байр суурийг улам дордуулжээ. Гэхдээ ийм өрсөлдөөн нь зөвхөн Java хөгжүүлэгчдэд график номын санг хөгжүүлж, сайжруулахад түлхэц өгсөн. Мөн энэ нийтлэлд бид юу болсныг харах болно.

Хийсвэр цонхны хэрэгсэл

Abstract Window Toolkit (богинохондоо AWT) нь анх 1995 онд Sun Microsystems компаниас гаргасан. Энэ нь Java-д зориулсан GUI үүсгэх анхны оролдлого байсан юм. AWT нь C хэл дээр бичигдсэн номын сангаас аргуудыг дууддаг давхаргын үүрэг гүйцэтгэдэг бөгөөд эдгээр аргууд нь эргээд график бүрэлдэхүүн хэсгүүдийг ашигласан. үйлдлийн систем. Нэг талаараа ийм маягаар бүтээгдсэн программ нь ашигласан үйлдлийн систем дээрх бусад бүх программтай гадаад төрхөөрөө төстэй байсан ч нөгөө талаас нэг программ нь өөр өөр үйлдлийн системүүд дээр огт өөр харагдах боломжтой нь хөгжүүлэлтийг хүндрүүлдэг. Нэмж дурдахад, олон платформыг ашиглахын тулд бүрэлдэхүүн хэсгүүдийн дуудлагын интерфейсийг нэгтгэх шаардлагатай байсан бөгөөд энэ нь функциональ байдлыг бага зэрэг багасгахад хүргэсэн. Бүрэлдэхүүн хэсгүүдийн багц нь бас нэлээд даруухан байдаг. Жишээлбэл, хүснэгт байхгүй, дүрсийг товчлуур дээр байрлуулах боломжгүй. AWT нь ашигласан нөөцийг автоматаар гаргахыг оролддог. Энэ нь гүйцэтгэлд нөлөөлж, архитектурыг хүндрүүлдэг. AWT сурахад хялбар боловч нарийн төвөгтэй зүйл бичихэд хэцүү байдаг. Одоо AWT нь ихэвчлэн апплетуудад ашиглагддаг. Oracle одоогоор хөгжүүлэгчдийг Swing-д шилжихийг дэмжиж байгаа бөгөөд энэ нь илүү аюулгүй байдаг.

Зураг 1 - Windows орчинд AWT ашиглан бичсэн програмын жишээ

AWT-ийн дараа 1998 онд Sun Swing-ээ гаргасан. Энэ нь бүхэлдээ Java хэл дээр бичигдсэн бөгөөд дүрслэхдээ 2D ашигладаг. Swing нь AWT-ээс хамаагүй олон төрлийн бүрэлдэхүүн хэсгүүдтэй. Бүрэлдэхүүн хэсгүүд нь одоо байгаа хэсгүүдээс өвлөн авснаар үүсгэхэд илүү хялбар болсон. Янз бүрийн загвар, арьсыг ашиглах чадварыг мөн танилцуулсан. Гэсэн хэдий ч ажлын хурд эрт хувилбаруудСавлуур нь нэлээд бага байсан бөгөөд програм бичих явцад гарсан алдаа нь үйлдлийн системийг хөлдөхөд хүргэж болзошгүй юм.

Гэсэн хэдий ч суралцахад хялбар, хүртээмжтэй байдлаас шалтгаалан их тообаримт бичиг, Swing нь Java дахь хамгийн алдартай GUI болсон. Үүний үндсэн дээр SwingX, JGoodies зэрэг олон өргөтгөлүүд гарч ирсэн бөгөөд энэ нь харааны хувьд төвөгтэй програмуудыг үүсгэхэд илүү хялбар болгодог. Орчин үеийн бүх Java програмчлалын орчинд багтдаг график засварлагчСавлуур. Одоо илүү орчин үеийн хүрээнүүд байгаа ч Swing хамгийн алдартай хэвээр байна.


Зураг 2 - Swing ашиглан бичсэн програмын жишээ

Стандарт виджет хэрэгслийн хэрэгсэл

SWT нь Swing удаашралтай байх үед IBM-ээс гаргасан бөгөөд голчлон Eclipse програмчлалын орчныг сурталчлах зорилгоор гаргасан. AWT-ийн нэгэн адил SWT нь OS-ийн бүрэлдэхүүн хэсгүүдийг ашигладаг боловч өөр өөр платформуудад харилцан ажиллах боломжтой интерфейсүүдийг ашигладаг. Тиймээс үйлдлийн систем бүрт тусдаа JAR номын санг илгээх ёстой. Энэ нь янз бүрийн үйлдлийн системд тохирох функцуудыг бүрэн ашиглах боломжийг танд олгоно. Мөн дутуу бүрэлдэхүүн хэсгүүдийг 2D ашиглан хэрэгжүүлсэн. Гэсэн хэдий ч SWT нь Swing-ээс илүү эзэмшихэд хэцүү болсон. Нэмж дурдахад программист нь програмаар нөөцийг гаргах ажлыг өөрөө хэрэгжүүлэх ёстой.

Зураг 3 - Swing ашиглан бичсэн програмын жишээ

JavaFX-ийг 2008 онд Oracle гаргасан. Энэ нь интернетийн баялаг програмыг бий болгох платформ хэлбэрээр байрладаг. Үзүүлэхийн тулд график дамжуулах хоолойг ашигладаг бөгөөд энэ нь програмыг ихээхэн хурдасгадаг. Баригдсан бүрэлдэхүүн хэсгүүдийн том багц байдаг. Мөн график зурах тусдаа бүрэлдэхүүн хэсгүүд байдаг. Мультимедиа контент, хөдөлгөөнт дүрс, тэр ч байтугай олон мэдрэгчтэй холбоотой дэмжлэгийг хэрэгжүүлсэн. Бүрэлдэхүүн хэсгүүдийн харагдах байдлыг CSS загвар ашиглан тохируулдаг. Нэмж дурдахад JavaFX хэрэгслүүдийн багц нь хамгийн алдартай платформуудад эх суулгагч хийх боломжийг агуулдаг: Windows-д зориулсан exe эсвэл msi, Linux-д зориулсан deb эсвэл rpm, Mac-д зориулсан dmg. Oracle вэбсайт нь нарийвчилсан баримт бичиг, олон тооны бэлэн жишээнүүдтэй.

Тиймээс, дээрх график хэрэглэгчийн интерфэйсүүдийн гол онцлог, сул талуудыг тайлбарласны дараа бид аль даалгаварт хамгийн тохиромжтой болохыг шийдэж чадна. Abstract Window Toolkit нь апплет үүсгэхэд илүү тохиромжтой. Интернетээс, тэр дундаа орос хэл дээр асар их хэмжээний баримт бичгийг олж авах боломжтой тул эхлэгч нь Swing-ийг санал болгож болно. JavaFX нь баялаг интернет програмуудыг бүтээхэд тохиромжтой.

Ашигласан эх сурвалжуудын жагсаалт

    Ryzhenko A. V. Объект хандалтат програмчлал: 010501 - "Хэрэглээний математик, мэдээлэл зүй" мэргэжлээр хичээллэх сургалт, арга зүйн цогцолбор. - 2007 он.

    Хабибуллин I. Ш. Жава 7 (4-р хэвлэл). - BHV-Петербург, 2012 он.

    Кларк Ж., Коннорс Ж., Бруно Е.Ж. JavaFX: Баян интернетийн програмуудыг хөгжүүлэх нь. – Pearson Education, 2009.

    Northover S., Wilson M. Swt: стандарт виджет хэрэгслийн багц, боть 1. - Addison Wesley Professional, 2004.

Java хэл дээрх график интерфэйс нь хөгжил, үүсэх маш хэцүү замыг туулсан. Удаан хугацааны турш түүнийг удаан ажилласан, системийн нөөцөд шунасан, хязгаарлагдмал ажиллагаатай гэж буруутгаж байсан.

Java AWT

Sun Java-д зориулсан GUI-ийн анхны оролдлого нь номын сан байв A.W.T.(Abstract Window Toolkit) - янз бүрийн цонхны орчинтой ажиллах хэрэгсэл. Sun нь C хэл дээр бичигдсэн номын сангаас аргуудыг дууддаг Java давхарга хийсэн. AWT номын сангийн аргууд нь үйлдлийн орчны график бүрэлдэхүүн хэсгүүдийг үүсгэж ашигладаг. Нэг талаараа энэ нь сайн хэрэг, учир нь Java програм нь ижил үйлдлийн систем дэх бусад програмуудтай төстэй юм. Гэхдээ үүнийг өөр платформ дээр ажиллуулах үед бүрэлдэхүүн хэсгүүдийн хэмжээ, үсгийн фонтуудын ялгаа байж болзошгүй. Гадаад төрххөтөлбөрүүд.

Олон платформыг хангахын тулд A.W.T.Бүрэлдэхүүн хэсгүүдийн дуудлагын интерфэйсүүдийг нэгтгэсэн тул үйл ажиллагааг бага зэрэг бууруулсан. Мөн бүрэлдэхүүн хэсгүүдийн багц нь нэлээд бага болсон. Жишээлбэл, AWT-д хүснэгт байхгүй, товчлуур дээр дүрсийг дэмждэггүй. Гэсэн хэдий ч багц java.awtЭхний хувилбараасаа эхлэн Java-д багтсан бөгөөд GUI үүсгэхэд ашиглаж болно.

Тиймээс бүрэлдэхүүн хэсгүүд A.W.T."ажил" бүү хий. Энэ бол зүгээр л тэдний ажиллаж байгаа үйлдлийн системийн удирдлагад зориулсан "Java боолт" юм. Эдгээр бүрэлдэхүүн хэсгүүдийн бүх хүсэлтийг үйлдлийн систем рүү дахин чиглүүлдэг бөгөөд энэ нь бүх ажлыг гүйцэтгэдэг.

Ашигласан нөөц A.W.T.автоматаар гаргахыг оролддог. Энэ нь архитектурыг бага зэрэг хүндрүүлж, гүйцэтгэлд нөлөөлдөг. AWT ашиглан ноцтой зүйл бичих нь зарим талаараа хэцүү байх болно. Одоо энэ нь зөвхөн апплетуудад ашиглагддаг.

SWING-ийн үндсэн ойлголтууд

Дараа нь A.W.T. Sun нь график бүрэлдэхүүн хэсгүүдийн номын санг боловсруулсан Савлуур, бүхэлдээ Java хэл дээр бичигдсэн. 2D дүрсийг үзүүлэхэд ашигладаг бөгөөд энэ нь нэгэн зэрэг хэд хэдэн давуу талыг авчирдаг. Иж бүрдэл стандарт бүрэлдэхүүн хэсгүүдолон янз байдал, үйл ажиллагааны хувьд AWT-ээс мэдэгдэхүйц давж гардаг. Swing нь одоо байгаа хэсгүүдээс өвлөн авах замаар шинэ бүрэлдэхүүн хэсгүүдийг бий болгоход хялбар болгож, янз бүрийн загвар, арьсыг дэмждэг.

Шинэ UI номын сангийн бүтээгчид Савлуур"Дугуйг дахин зохион бүтээгээгүй" бөгөөд AWT-ийг номын сангийн үндэс болгон сонгосон. Мэдээжийн хэрэг, бид тодорхой хүнд жинтэй AWT бүрэлдэхүүн хэсгүүдийг (Товч, Шошго болон үүнтэй төстэй ангиудаар төлөөлдөг) ашиглах тухай яриагүй. Зөвхөн хөнгөн бүрэлдэхүүн хэсгүүд нь шаардлагатай уян хатан байдал, хяналтыг хангаж өгдөг. Өв залгамжлалын диаграмм нь AWT болон Swing хоорондын хамаарлыг харуулж байна.

Хамгийн чухал ялгаа Савлуур AWT-аас харахад Swing бүрэлдэхүүн хэсгүүд нь үйлдлийн системд огт холбогдоогүй тул илүү тогтвортой, хурдан байдаг. Java хэл дээр ийм бүрэлдэхүүн хэсгүүдийг хөнгөн жинтэй гэж нэрлэдэг бөгөөд тэдгээрийн ажиллах үндсэн зарчмуудыг ойлгох нь Swing хэрхэн ажилладагийг тайлбарлахад ихээхэн тус болно.

Дээд түвшний савлуур

Програмын график интерфэйсийг бий болгохын тулд та савлуур гэж нэрлэгддэг Swing номын сангийн тусгай бүрэлдэхүүн хэсгүүдийг ашиглах хэрэгтэй. дээд түвшин(дээд түвшний сав). Эдгээр нь хэрэглэгчийн интерфейсийн бүрэлдэхүүн хэсгүүдийг агуулсан үйлдлийн системийн цонхнууд юм. Дээд түвшний контейнерууд нь JFrame болон JWindow цонх, JDialog харилцах цонх, JApplet апплет (энэ нь цонх биш боловч энэ апплетыг ажиллуулж буй хөтөч дээр интерфэйсийг харуулах зорилготой) багтана. Дээд түвшний дүүжин савнууд нь хүнд жинтэй бүрэлдэхүүн хэсгүүд бөгөөд ерөнхий дүрмээс үл хамаарах зүйл юм. Бусад бүх Swing бүрэлдэхүүн хэсгүүд нь хөнгөн жинтэй.

Энгийн Савлуурцонхны интерфейсийн жишээ jFrame.

java.awt.Dimension импортлох; javax.swing.JFrame импортлох; javax.swing.JLabel импортлох; нийтийн анги JFrameTest ( public static void createGUI() ( JFrame frame = new JFrame("Test frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("Test label"); frame.getContentPane(). add(label); frame.setPreferredSize(new Dimension(200, 100)); frame.pack(); frame.setVisible(true); ) public static void main(String args) ( JFrame.setDefaultLookAndFeelDecorated(true); javax. swing.SwingUtilities.invokeLater(new Runnable() ( нийтийн хүчингүй ажиллуулах() ( createGUI(); ) )); ) )

Барилгачин JFrame()параметргүй бол хоосон цонх үүсгэдэг. Барилгачин JFrame(Мөрийн гарчиг)гарчигтай хоосон цонх үүсгэдэг. Бүтээх хамгийн энгийн програмхоосон цонхтой бол дараах аргуудыг ашиглах ёстой.

  • setSize(int width, int height) - цонхны хэмжээг тодорхойлох;
  • setDefaultCloseOperation(int operation) - програмыг зогсоох үйлдлийн тодорхойлолт;
  • setVisible(boolean visible) - цонхыг харагдуулна.

Хэрэв та цонхны хэмжээг тодорхойлоогүй бол дотор нь байгаа зүйлээс үл хамааран энэ нь тэг өндөртэй байх болно. Цонхны хэмжээсүүд нь зөвхөн "ажлын" талбараас гадна хил хязгаар, гарчгийн мөрийг агуулдаг.

setDefaultCloseOperation арга нь "програмаас гарах" үед хийх үйлдлийг тодорхойлдог. Үүнийг хийхийн тулд JFrame ангид тодорхойлсон EXIT_ON_CLOSE тогтмолыг үйлдлийн параметр болгон дамжуулна.

Анхдагч байдлаар, цонхыг үл үзэгдэх байдлаар үүсгэдэг. Цонхыг дэлгэцэн дээр харуулахын тулд setVisible аргыг true параметрээр дууддаг. Хэрэв та үүнийг хуурамч параметрээр дуудвал цонх үл үзэгдэх болно.

GUI java савлуурцонх үүсгэх жишээ jFrameдараах зурагт үзүүлэв.

Номын санг холбохын тулд Савлуурпрограм нь номын санг импортлох шаардлагатай javax.swing.

Энгийн цонх, харилцах цонх эсвэл апплет байхаас үл хамааран дээд түвшний контейнер үүсгэх бүрд савны бүтээгч үүнийг үүсгэдэг. JRootPane үндэс самбар. Дээд түвшний дүүжин савнууд нь бусад бүрэлдэхүүн хэсгүүд нь JRootPane-ээс гадуур "мөлхөж" чадахгүй байхыг баталгаажуулдаг.

Үндэс цайвар JRootPaneнь саванд "гүн" шинж чанарыг нэмж, бүрэлдэхүүн хэсгүүдийг нэг нэгээр нь байрлуулахаас гадна шаардлагатай бол тэдгээрийг солих, бүрэлдэхүүн хэсгүүдийн гүнийг нэмэгдүүлэх, багасгах боломжийг олгодог. Энэ функц нь олон баримт бичгийн програм үүсгэхэд зайлшгүй шаардлагатай. Савлуур, цонхнууд нь бие биенийхээ дээр давхарласан хөнгөн бүрэлдэхүүн хэсгүүд, мөн унждаг (контекст) цэсүүд болон зөвлөмжүүдийг төлөөлдөг.

Дараах зураг нь эх хавтангийн бүтцийг тодорхой харуулж байна JRootPane.

Үндэс самбар JRootPaneнь үндсэн Swing JComponent ангиас удамшсан контейнер юм. Энэ контейнерт дотоод RootPaneLayout ангид хэрэгжсэн тусгай зохион байгуулалтын менежер бүрэлдэхүүн хэсгүүдийн байршлыг хариуцдаг. Энэхүү зохион байгуулалтын менежер нь үндсэн самбарын бүх бүрэлдэхүүн хэсгүүдийг байх ёстой байдлаар нь байрлуулах үүрэгтэй: давхаргатай самбар нь цонхны бүхэл бүтэн зайг эзэлдэг; түүний FRAME_CONTENT_LAYER нь цэсийн хэсэг болон агуулгын самбарыг агуулдаг бөгөөд үүнээс илүү нь ил тод самбар юм.

Үндсэн самбарын бүх бүрэлдэхүүн хэсэг JRootPaneавах эсвэл өөрчлөх боломжтой. Үүнд авах/тогтоох аргууд байдаг. Програмчлалын хувьд JRootPane getRootPane() аргыг ашиглан авч болно.

Дээд түвшний контейнеруудаас гадна эх самбарыг олон баримт бичгийн программууд дээр үүсгэсэн, "ширээний" JDesktopPane дээр байрлах дотоод JInternalFrame цонхонд ашигладаг. Энэ нь эдгээр цонхнууд нь энгийн хөнгөн эд анги гэдгийг мартаж, тэдэнтэй жинхэнэ дээд түвшний сав юм шиг ажиллах боломжийг олгоно.

Давхаргатай самбар JLayeredPane

Үндэс хавтангийн суурь (сав) дээр давхаргат хавтан гэж нэрлэгддэг JLayeredPaneбүгдийг эзэлдэг боломжтой зайсав. Энэ самбарт үндсэн самбарын бусад бүх хэсгүүд, түүний дотор хэрэглэгчийн интерфейсийн бүх бүрэлдэхүүн хэсгүүд байрладаг.

JLayeredPaneсаванд гүнийн шинж чанарыг нэмэхэд ашигладаг. Өөрөөр хэлбэл, олон давхаргат самбар нь бүрэлдэхүүн хэсгийн давхаргууд (давхаргууд) байрладаг саванд гурав дахь хэмжээсийг зохион байгуулах боломжийг олгодог. Энгийн саванд бүрэлдэхүүн хэсгийн байрлалыг тухайн бүрэлдэхүүн хэсэг нь хэр их хэмжээний сав эзэлдэгийг харуулсан тэгш өнцөгтөөр тодорхойлно. Олон давхаргат самбарт бүрэлдэхүүн хэсэг нэмэхдээ зөвхөн бүрэлдэхүүн хэсэгт байрлах тэгш өнцөгтийг төдийгүй түүний байрлах давхаргыг зааж өгөх ёстой. Давхаргатай самбар дахь давхарга нь бүхэл тоогоор тодорхойлогддог. Давхаргыг тодорхойлох тоо их байх тусам давхарга өндөр байна.

Саванд нэмсэн эхний бүрэлдэхүүн хэсэг нь дараа нь нэмсэн бүрэлдэхүүн хэсгүүдээс өндөр байна. Ихэнх тохиолдолд хөгжүүлэгч нь бүрэлдэхүүн хэсгүүдийн байрлалтай харьцдаггүй. Бүрэлдэхүүн хэсгүүдийг нэмэхэд тэдгээрийн байрлал автоматаар өөрчлөгддөг. Гэсэн хэдий ч давхаргатай самбар нь бүрэлдэхүүн хэсгүүдийн байрлалыг саванд нэмсний дараа динамикаар өөрчлөх боломжийг олгодог.

Давхаргатай хавтангийн чадавхийг зарим бүрэлдэхүүн хэсгүүд өргөнөөр ашигладаг Савлуур. Эдгээр нь олон баримт бичгийн програмууд, зөвлөмжүүд болон цэсүүдэд онцгой ач холбогдолтой юм. Олон баримт бичиг Савлуурпрограмууд нь тусгай савыг ашигладаг JDesktopPane("ширээний") -аас өвлөн авсан JLayeredPaneДотор дүүжин цонхыг барьж байгаа A. Олон баримт бичгийн програмын хамгийн чухал функцууд болох "идэвхтэй" цонхыг бусдаас дээгүүр байрлуулах, цонхыг багасгах, чирэх зэрэг нь давхаргат самбарын механизмаар хангагдсан байдаг. Хэрэгслийн зөвлөмж, цэсэнд давхаргат самбар ашиглахын гол давуу тал нь тэдгээрийн хурд юм. Хэрэгслийн зөвлөмж эсвэл цэсийг хүссэн бүрэлдэхүүн хэсгийн дээр байрлах шинэ хүнд жингийн цонх үүсгэхийн оронд, Савлуурхурдан хөнгөн бүрэлдэхүүн хэсгийг бий болгодог. Энэ бүрэлдэхүүн хэсэг нь бусад бүх бүрэлдэхүүн хэсгүүдийн стек дэх давхраатай самбарын хангалттай өндөр давхаргад байрлуулсан бөгөөд зөвлөмж эсвэл цэсийг харуулахад ашиглагддаг.

Олон давхаргат самбар нь хязгааргүй тооны давхаргыг зохион байгуулах боломжийг олгодог. Бүтэц JLayeredPaneБүх Swing бүрэлдэхүүн хэсгүүдэд ашиглагддаг хэд хэдэн стандарт давхаргыг багтаасан бөгөөд энэ нь танд өгөх боломжийг олгодог зөв ажилолон давхаргат хавтангийн бүх механизм. Стандарт JLayeredPane давхаргыг дараах зурагт үзүүлэв.

Өгөгдмөл давхарга нь бүгдийг байрлуулахад ашиглагддаг уламжлалт бүрэлдэхүүн хэсгүүд, тэдгээр нь саванд нэмдэг. Энэ давхарга нь олон баримт бичгийн хэрэглээний дотоод цонхыг агуулдаг.

Палетт давхарга нь ихэвчлэн бусад интерфейстэй давхцдаг олон хэрэгсэл бүхий цонхнуудыг байрлуулах зориулалттай. JDesktopPane самбар нь ийм цонхнуудыг үүсгэх боломжийг олгодог бөгөөд энэ давхарга дээр байрлуулдаг.

Modal давхарга нь хөнгөн хэлбэрийн модаль харилцах цонхыг байрлуулах зорилготой байв. Гэсэн хэдий ч ийм харилцах цонхнууд хараахан хэрэгжээгүй байгаа тул энэ давхаргыг Swing-д одоогоор ашиглаагүй байна.

Попап цэс болон зөвлөмжийн хамгийн түгээмэл хэрэглэгддэг давхарга.

Хамгийн дээд давхарга. Чирэх, буулгах үйлдэлд зориулагдсан ( чирэх, буулгах drop), энэ нь програмын интерфейс дээр тодорхой харагдах ёстой.

Давхаргатай самбар бүхий JLayeredPane-ийн жижиг жишээ нь өөр өөр давхаргад бүрэлдэхүүн хэсгүүдийг хэрхэн нэмэх, давхаргууд хэрхэн бие биенийхээ дээр давхарлаж байгааг харуулж байна.

javax.swing.* импортлох; java.awt.* импортлох; // текст ангитай хоёр төрлийн дүрс зурах анги Зураг өргөтгөл JComponent ( private static final long serialVersionUID = 1L; private; private Өнгөний өнгө; хувийн int төрөл; хувийн мөр текст; // параметрүүд: өнгө ба зургийн төрөл Зураг(Өнгөний өнгө, int төрөл, Мөр текст) ( this.color = өнгө; this.type = төрөл; this.text = text; setOpaque(false); ) public void paintComponent(Graphics g) ) ( // дүрсийг зурах g.setColor(color); шилжүүлэгч (төрөл) ( case 0: g.fillOval(0, 0, 90, 90); завсарлага; case 1: g.fillRect(0, 0, 130, 80 ); break; ) g.setColor(Color.yellow); g.drawString(текст, 10, 35); ) ) нийтийн анги JLayeredPaneTest нь JFrame (хувийн статик эцсийн урт serialVersionUID = 1L; нийтийн JLayeredPaneTest() ( // үүсгэх) a window super("Example LayeredTest"); // Цонх хаагдсан үед гарах setDefaultCloseOperation(EXIT_ON_CLOSE); // Давхаргатай JLayeredPane самбарыг тодорхойлох lp = getLayeredPane(); // Гурван дүрс үүсгэх Зураг1 = шинэ Зураг(Color.red) , 0, "Попап зураг"); Зураг2 = шинэ Зураг(Өнгө.цэнхэр, 0, "Зураг 1"); Зураг3 = шинэ Зураг(Цэнхэр өнгийн өнгө, 1, "Зураг 2"); // дүрсүүдийг ол цонхонд figure1.setBounds (10, 40, 12 0.120); figure2.setBounds(60, 120, 160, 180); figure3.setBounds(90, 55, 250, 180); // өөр өөр давхаргад дүрс нэмэх lp.add(figure1, JLayeredPane.POPUP_LAYER); lp.add(зураг2, JLayeredPane.PALETTE_LAYER); lp.add(зураг3, JLayeredPane.PALETTE_LAYER); // аль нэг дүрсийн байрлалыг өөрчлөх lp.setPosition(зураг3, 0); // хэмжээг тодорхойлж, цонхыг нээх setSize(280, 250); setVisible(үнэн); ) public static void main(String args) ( JFrame.setDefaultLookAndFeelDecorated(true); new JLayeredPaneTest(); ) )

Жишээ нь жижиг цонх үүсгэдэг jFrameболон олон Зураг бүрэлдэхүүн хэсэг нь давхаргат самбар нэмэгдсэн байна. Ямар ч дээд түвшний Swing саванд давхаргатай самбар авахын тулд аргыг дуудах хэрэгтэй getLayeredPane().

Figure туслагч анги нь JComponent үндсэн ангийн шинж чанарыг өвлөн авч, өөр өөр өнгөөр ​​хоёр төрлийн дүрс (тойрог ба тэгш өнцөгт) зурах боломжийг олгодог. Дүрс зурах параметрүүдийг анги үүсгэгч дээр тавьдаг.

Интерфейсийг тодорхойлохдоо өөр өөр өнгийн гурван дүрс (хоёр тойрог ба тэгш өнцөгт) үүсдэг. Тойрог POPUP_LAYER давхаргад, тэгш өнцөгтүүдийг PALETTE_LAYER давхаргад байрлуулна. Бүрэлдэхүүн хэсгүүдийг байрлуулахдаа тэдгээрийн үнэмлэхүй дэлгэцийн координатыг зааж өгдөг, учир нь ердийн байршлын менежерүүд давхаргат самбар дээр ажилладаггүй.

Төгсгөлд нь тэгш өнцөгтүүдийн аль нэгнийх нь байрлалыг өөрчилснөөр давхаргын эхнийх нь байх болно, гэхдээ энэ нь анх хоёр дахь нь нэмэгдсэн байна. Аппликешныг ажиллуулах үед давхаргат самбар ажиллаж, бүрэлдэхүүн хэсгүүдийг давхарга, байрлалын дагуу цэгцтэй байрлуулж байгааг харах болно.

AT нийтлэг програмуудолон давхаргат самбарыг шууд ашиглах нь ховор бөгөөд тэдгээрийн дотор функцийг үл мэдэгдэх байдлаар гүйцэтгэдэг. Гэсэн хэдий ч заримдаа энэ нь гайхалтай эффект, ер бусын интерфейсийг бий болгоход тусалдаг бөгөөд жишээлбэл, хөгжүүлэгчээс хүнлэг бус хүчин чармайлт, заль мэхийг шаардахгүйгээр энгийн бүрэлдэхүүн хэсгүүдийн дээр хөдөлгөөнт дүрс эсвэл видео байрлуулах боломжийг олгодог.

ContentPane

ContentPane нь үндсэн самбарын дараагийн хэсэг бөгөөд програмын хэрэглэгчийн интерфейсийн бүрэлдэхүүн хэсгүүдийг байрлуулахад ашиглагддаг. ContentPaneдавхрагатай самбарын ихэнх зайг эзэлдэг (цэсийн мөрөнд эзэлдэг зайнаас бусад). Агуулгын самбар нь дараа нь цонхонд нэмэгдэх бүрэлдэхүүн хэсгүүдийг хамрахаас урьдчилан сэргийлэхийн тулд давхаргат самбар нь үүнийг FRAME_CONTENT_LAYER гэж нэрлэгддэг, -30000 дугаартай тусгай маш бага давхарга дээр байрлуулна.

Та контентын самбар руу нэвтрэх боломжтой getContentPane() JFrame анги. Add(Component component) аргыг ашиглан түүнд ямар ч хяналт нэмж болно. Солих ContentPane JPanel төрлийн өөр ямар ч самбар байгаа бол та энэ аргыг ашиглаж болно setContentPane()

Агуулгын самбарт товчлуур нэмэх жишээ:

JButton newButton = шинэ JButton(); getContentPane().add(newButton);

Үүний үр дүнд бид товчлуур бүхий цонхыг авдаг. Товчлуур нь цонхны боломжтой хэсгийг бүхэлд нь эзэлдэг. Энэ эффект нь бүх програмуудад ашиггүй тул самбар дээрх элементүүдийг байрлуулах янз бүрийн аргыг ашиглах хэрэгтэй.

Агуулгын самбарыг бүрэн сольж болно. Дараахь зүйлийг анхаарч үзээрэй Савлуурагуулгын самбарын жишээ ContentPane.

javax.swing.* импортлох; нийтийн анги ContentPaneReplace нь JFrame-г өргөтгөдөг (хувийн статик эцсийн урт serialVersionUID = 1L; нийтийн ContentPaneReplace() ( super("Test ContentPane"); setDefaultCloseOperation(EXIT_ON_CLOSE); // JPanel-ийн хоёр товчлуур бүхий самбар үүсгэх JPanel контент = шинэ JPanel(); нэмэх (шинэ JButton("Гэр бүл")); contents.add(шинэ JButton("Сургууль")); // Агуулгын самбарыг солих setContentPane(контент); // Цонхны хэмжээг тодорхойлох setSize(200, 100); // Цонхыг нээх setVisible (true); ) public static void main(String args) ( JFrame.setDefaultLookAndFeelDecorated(true); new ContentPaneAdd(); ) )

Жишээ нь жижиг цонх, хоёр товчлуур бүхий самбар үүсгэдэг бөгөөд энэ нь дараа нь юм setContentPane()цонхны агуулгын самбарыг орлоно. Тиймээс нэмэх () аргыг дуудах энгийн нэмэлтийн оронд орлуулах аргыг ашигласан. Цонхны интерфейсийг дараах дэлгэцийн агшинд үзүүлэв.

Агуулгын самбар ContentPaneөөрөө онцгой зүйл биш. Бүрэлдэхүүн хэсгүүд нь түүнд нэмэгдсэн гэдгийг санах хэрэгтэй.

Ил тод JOptionPane

Ил тод самбар JOptionPaneдавхаргатай хавтангийн бүх элементүүдийн дээр үндэс хавтан болгон байрлуулсан. JOptionPane-ийн байршлыг үндсэн самбараар зохицуулдаг бөгөөд энэ нь тунгалаг самбарыг давхраатай самбараас дээш байрлуулснаар цонхны бүхэл хэсгийг, тэр дундаа цэсний хэсэгт байрлах хэсгийг бүрхэнэ.

JOptionPaneпрограмуудад ховор хэрэглэгддэг тул үндсэн самбар нь үүнийг үл үзэгдэх болгодог бөгөөд энэ нь зургийн системийн ачааллыг бууруулдаг. Хэрэв та ил тод самбарыг харагдуулах юм бол ил тод байгаа эсэхийг шалгах хэрэгтэй (түүний тунгалаг бус шинж чанар нь худал), эс тэгвээс энэ нь үндсэн самбарын бусад бүх элементүүдийг хамрах бөгөөд бусад интерфейс нь харагдах болно гэдгийг санаарай. үл үзэгдэх.

Ямар тохиолдолд ил тод хавтанг ашиглаж болох вэ? JOptionPane? Үүнийг эхнээс нь хэрэгжүүлэхэд ихээхэн хүчин чармайлт шаардагдах програмын функцуудыг тодорхойлоход ашиглаж болно. Ил тод самбарыг хэрэглэгчийн интерфэйсийг автоматаар шалгахад тохируулж болно. Үүнд нэгтгэсэн үйл явдлууд нь дибаг хийх завсрын үр дүнг хянах боломжийг танд олгоно. Заримдаа энэ арга нь гарын авлагын туршилтаас хамаагүй илүү үр дүнтэй байдаг.

Ил тод самбар JOptionPaneЦэсийн талбар зэрэг бүх бүрэлдэхүүн хэсгүүдийн дээр "хөвөгч" сонирхолтой хөдөлгөөнт дүрс хийх эсвэл заримыг нь үндсэн UI руу илгээхээс өмнө зохицуулах шаардлагатай бол үйл явдлыг барихад ашиглаж болно.

Ил тод Swing JOptionPane ашиглах жишээ:

// Ил тод JOptionPane импортыг ашиглах java.awt.Dimension; java.awt.Font импортлох; java.awt.event.WindowEvent импортлох; java.awt.event.WindowListener импортлох; javax.swing.JDialog импортлох; javax.swing.JFrame импортлох; javax.swing.JLabel импортлох; javax.swing.JOptionPane импортлох; javax.swing.UIManager импортлох; нийтийн анги JOptionPaneTest нь JFrame-г өргөтгөдөг (хувийн статик эцсийн урт serialVersionUID = 1L; нийтийн статик эцсийн Фонт FONT = шинэ Фонт("Verdana", Font.PLAIN, 11); нийтийн статик хүчингүй болгохGUI() ( JFrame хүрээ = шинэ JFrame("Test JOptionPane" "); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(шинэ WindowListener() ( нийтийн хүчингүй цонхActivated(WindowEvent үйл явдал) () public void windowClosed(WindowEvent event) () public void windowDeactivated(Window public void event) windowDeiconified(WindowEvent event) () public void windowIconified(WindowEvent event) () public void windowOpened(WindowEvent event) () public void windowClosing(WindowEvent event) ( Объектийн сонголт = ( "Тийм", "Үгүй!" ); int rc = JOptionPane.showOptionDialog(event.getWindow(), "Цонх хаах уу?", "Баталгаажуулах", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, сонголтууд, сонголтууд); (худал);System.exit(0); ) ) ))) JLabel шошго = шинэ JLabel("Цонхыг хаахдаа тунгалаг самбар ашиглах"); frame.getContentPane().add(шошго); frame.setPreferredSize(шинэ Хэмжээ(350, 80)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(үнэн); ) public static void main(String args) ( javax.swing.SwingUtilities.invokeLater(new Runnable() ( public void run() ( UIManager.put("Button.font", FONT); UIManager.put("Label.font" ", FONT); JFrame.setDefaultLookAndFeelDecorated(үнэн); JDialog.setDefaultLookAndFeelDecorated(үнэн); createGUI(); ) ); ) )

Хэрэв setDefaultCloseOperation аргыг тогтмол дамжуулсан бол JFrame.EXIT_ON_CLOSE, дараа нь цонх хаагдах үед програм ажиллахаа болино. Жишээн дээр тогтмолыг энэ аргад шилжүүлсэн JFrame.ХААХГҮЙ_ЮУ_ГҮЙИнгэснээр цонх хаагдахад юу ч болохгүй. Жишээн дээрх програмаас гарах нь аргын JFrame сонсогч WindowListener-ээс хийгддэг цонх хаах. Цонх хаагдсан үед цонх хаах аргыг WindowEvent үйл явдлын параметрээр дууддаг бөгөөд энэ нь ил тод Swing JOptionPane дээр баталгаажуулах харилцах цонхыг нээдэг.

Дараах дэлгэцийн зураг нь хоёр програмын цонхыг харуулж байна. Дээд талын үндсэн цонх. Энэ цонхыг хааснаар доод зорилгыг баталгаажуулах харилцах цонх нээгдэнэ.

JMenuBar цэсний мөр

Swing-д JRootPane root самбарыг ашиглах чухал шинж чанаруудын нэг нь цонхонд цэсийн мөр байрлуулах хэрэгцээ юм. JMenuBar. Програмын функцэд хандах ямар нэгэн цэсгүйгээр ноцтой програмыг бүтээх боломжгүй юм. Swing номын сан нь хөнгөн бүрэлдэхүүн хэсгүүд болох тохиромжтой JMenuBars-ыг бий болгох маш сайн боломжоор хангадаг.

Цэсний мөр JMenuBar FRAME_CONTENT_LAYER тусгай давхаргад давхаргат самбарт байрлуулсан бөгөөд цонхны дээд талд бага зай эзэлнэ. Цэсний мөрний урт нь цонхны хэмжээтэй тэнцүү байна. Цэсийн мөрний өргөн нь түүнд агуулагдах бүрэлдэхүүн хэсгүүдээс хамаарна.

Үндэс самбар нь агуулгын самбар болон цэсийн мөрийг баталгаажуулдаг JMenuBarдавхцаагүй. Хэрэв цэсийн мөр шаардлагагүй бол үндсэн самбар нь агуулгын самбарыг байрлуулах бүх зайг ашигладаг.

Савлуурын жишээ

Хуудасны текстэнд дурдсан жишээнүүдийн эх кодыг татаж авах боломжтой.

Дүгнэлт хийх хөтөлбөрийн талаар байнга ярьснаар бид таныг залхсан гэж таамаглаж байна. мессежконсол руу. Энэ хичээл дээр энэхүү "уйтгартай" цуврал жишээнүүд эцэст нь таслагдах болно: бид Java хэл дээр цонх хэрхэн бүтээгддэгийг харуулах бөгөөд энэ нь хялбар ажил гэдгийг та харах болно. Энэ бол бидний код юм (бид дараагийн хичээл дээр ярилцаж эхлэх болно, учир нь энэ нь таны мэдэх шаардлагатай олон шинж чанартай байдаг):

java.awt.* импортлох;

javax.swing.* импортлох;

нийтийн анги MoneyForNothing JFrame-г өргөтгөдөг(

// Барилгачин

нийтийн MoneyForNothing()(

setTitle("Мөнгөний төлөө юу ч биш тавтай морил");

setSize(шинэ Хэмжээ(600, 400));

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(үнэн);

public static void main(String args)(

MoneyForNothing mfn = шинэ MoneyForNothing();

FAR засварлах цонхонд ижил код энд байна:

Дашрамд хэлэхэд, бид танд програмын эх кодыг CP1251 кодчилолд (эсвэл ердийн хэлээр бол Windows кодчилолоор) нэн даруй бичихийг зөвлөж байна: кодчилол сэлгэх нь F8 товчийг дарж хийгдэх бөгөөд одоогийн кодчилол нь дээрх төлөвийн мөрөнд харагдана. засварлах хэсэг.

Нэвтрэх цэг өөрчлөгдөөгүй хэвээр байгаа боловч бусад код нь дарааллаар өөрчлөгдсөн (гэхдээ бид өөрсдөөсөө түрүүлэхгүй). Эмхэтгэж ажиллуулсны дараа та дараах зүйлийг харах ёстой.


Баяр хүргэе - хэдхэн мөрөнд та жинхэнэ график цонхыг бий болгосон! Үүнийг чирэх, хэмжээг өөрчлөх, буулгах, өргөжүүлэх, хаах боломжтой. Манай цонх ямар нэгэн байдлаар бүдгэрч, шууд хэлэхэд "муухай" болсон нь үнэн. Нэмж дурдахад, цонх нь дэлгэцийн зүүн дээд буланд харагдаж байгаа боловч би үүнийг төвд байлгахыг хүсч байна - үүнийг тэнд ашиглах нь илүү тохиромжтой, ийм гаралт нь илүү сайхан харагдаж байна. Ингээд жаахан “өнгөлөх” ажил хийцгээе.

Нэгдүгээрт, хоёр дахь асуудлыг шийдье - цонхны төвлөрөл. Энд бид зогсоод бодохыг зөвлөж байна - та үүнийг яаж хийх вэ?

Java графикийн санд цонхны зүүн дээд булангийн координатуудыг параметр болгон дамжуулдаг setLocation арга байдаг (энэ булангаас бусад график элементүүдийг цонхны дотор байрлуулсан) гэж үзье. Гэхдээ хэрэв та эдгээр параметрүүдийг "духан дээр" тавьсан бол үүнээс сайн зүйл гарахгүй нь лавтай. өөр нягтралтай дэлгэц дээр цонх таны төсөөлж байсан шиг харагдахгүй. Тиймээс координатуудыг илүү ухаалаг болгох хэрэгтэй.

Цонхыг голлуулахад шаардлагатай бүх зүйл бол цонхны хэмжээсийг (дашрамд хэлэхэд тэдгээрийг бүтээгч дээр суулгаж, 600-аас 400 пикселийн хэмжээтэй тэгш өнцөгтийг бүрдүүлдэг), дэлгэцийн нягтралыг мэдэж, дараа нь энгийн арифметик ашиглана. , зүүн дээд булангийн шаардлагатай координатыг тооцоол. Үүнд дараах кодыг оруулснаар хүрнэ

Хэмжээ sSize = Toolkit.getDefaultToolkit().getScreenSize(),

fSize = getSize();

хэрэв (fSize.height > sSize.height) (fSize.height = sSize.height;)

хэрэв (fSize.width > sSize.width) (fSize.width = sSize.width;)

setLocation((sSize.width - fSize.width)/2,

(sSize.height - fSize.height)/2);

setSize шугамын дараа шууд (шинэ Хэмжээ (600, 400)); бүтээгч дотор. Эх кодод шаардлагатай өөрчлөлтүүдийг хийж, програмыг эмхэтгэж, гүйцэтгэлд оруулах; цонх нь дэлгэцийн дэлгэцийн төвд гарч ирэх ёстой.

Одоо цонхны харагдах байдлын талаар хэдэн үг хэлье. Түүний хачирхалтай дүр төрхийг Java хөгжүүлэгчид техник хангамжийн платформ болон програм хангамжийн "чихмэл" байдлаас үл хамааран бүх график элементүүд (цонх, товчлуур, жагсаалт гэх мэт) нэг дүрслэл, нэг өнгөний схемтэй байхыг хичээсэнтэй холбон тайлбарлаж байна. Үүний тулд тэд "METAL" гэж нэрлэсэн тусгай хэв маягийг боловсруулсан. Хэрэв хөгжүүлэгч авахгүй бол тусгай хүчин чармайлт, дараа нь програмууд дахь график интерфэйсийн элементүүд нь тодорхой компьютерууд болон тэдгээрийн онцлогийг харгалзахгүйгээр яг ийм хэв маягаар харагдах болно. програм хангамж. Зарим тохиолдолд энэ нь утга учиртай боловч Windows дээр ажиллаж байгаа програм нь windows програм шиг, LINUX дээр ажиллаж байгаа нь linux програм шиг харагдаж байвал хамаагүй дээр гэдгийг хүлээн зөвшөөрөх хэрэгтэй. Үүнд хүрэхэд хялбар. Ангийн жишээ үүсгэхээс өмнө дараах кодыг нэвтрэх цэгт оруулахад л хангалттай.

оролдоод үз(UIManager.setLookAndFeel

(UIManager.getSystemLookAndFeelClassName());

барих(Exceptionlfe)()

Бид ингэж л хийх болно. Одоо манай программын шинэчилсэн хувилбарыг хөрвүүлж, ажиллуулахаар ажиллуулсны дараа график цонх нь "зохистой" харагдах болно.


Таны дэлгэцийн дэлгэцийн шинж чанарын тохиргооноос хамааран цонхны дэлгэц өөр байх болно; Бид сонгодог хэрэглэдэг Windows-ийн сэдэв xp. Таны цонх иймэрхүү харагдаж магадгүй:

Бүх зүйл хүлээгдэж буй байдлаар ажиллаж байгаа эсэхийг шалгаарай: цонх нь дэлгэцийн төв хэсэгт харагдах бөгөөд түүний гадаад төрх нь хүлээгдэж буй шиг байна.

Үүгээр GUI-ийн талаарх бидний анхны хичээл өндөрлөж байна. Үүнд бид "фасад" -ыг харуулсан боловч маш чухал ач холбогдолтой олон асуудлыг бүрэн орхисон бөгөөд үүнгүйгээр ерөнхийдөө Java, ялангуяа график интерфейсийг програмчлах боломжгүй юм. Бид дараагийн хичээл дээр эдгээр асуудлыг шийдэж эхлэх болно, гэхдээ одоо байгаа эх кодтойгоо тоглоорой.

Дасгалын хувьд, жишээлбэл, дэлгэцийн баруун доод буланд байгаа манай цонхны гаралтын координатыг тооцоолж, үр дүнг шалгана уу.

Өөр нэг дасгал нь илүү хялбар боловч та баримт бичгийг ашиглах хэрэгтэй болно (та үнэхээр хаа нэгтээ эхлэх хэрэгтэй): цонхны хэмжээг өөрчлөх боломжгүй болгох, жишээлбэл. бүс рүү системийн товчлууруудзураг шиг харагдсан

(санамж: мэдээлэл хайх түлхүүр үгс javax болон JFrame). Тиймээс ханцуй шамлан, амжилт хүсье!

Сэтгэгдэл

Үүсгэсэн цонх бүрэн эсвэл хэсэгчлэн үл үзэгдэх болно (та дэлгэцэн дээрх дэлгэцийн координатыг буруу тооцоолсны улмаас). Цонхны хяналтын товчлуурууд бас боломжгүй байж болно. "Даалгаврын менежер" дээрх даалгаврыг арилгах эсвэл компьютерийг дахин эхлүүлэхгүйгээр програмыг хэрхэн тасалдуулах вэ?

Бид FAR-аас гүйцэтгэх програмуудыг ажиллуулж байгаа тул Java програмын гүйцэтгэлийг тасалдуулах нь Control-C товчлуурын хослолыг дарах замаар хийгддэг (энд "C" нь латин үсэг бөгөөд үүнийг ижил төстэй кирилл үсэгтэй андуурч болохгүй).