Принципи за изграждане на графичен потребителски интерфейс
В предишните глави ние написахме програма, свързана с текстов терминал и писта от командния ред. Тези програми се наричат конзолни приложения. Те са проектирани да работят на сървъра, където тя не е длъжна да интерактивна комуникация с потребителя.
Програма работи в тясно сътрудничество с клиента, да получава сигнали от клавиатурата и мишката, работещи в графична среда. Всяко приложение е проектиран да работи в графична среда, трябва да се създаде най-малко един прозорец, в който ще вземе работното си място, и да го регистрирате в графична обвивка на операционната система, така че прозорецът може да взаимодейства с операционната система и други прозорци: припокриването, преместване, преоразмеряване сгънете етикета.
През десетилетията на развитието на компютърните технологии, създадена много различни графични системи: MS Windows, X Window System, Macintosh. Във всяка от тях на правилата за строителство на прозорци и техните компоненти: меню, полета за въвеждане, бутони, списъци, ленти за превъртане. Тези правила са сложни и объркващи. Графичен приложния програмен интерфейс за създаване на потребителския интерфейс, съдържа стотици функции.
За да се улесни създаването на прозорци и техните компоненти са написани библиотечните функции и класове: MFC, мотив, OpenLook, Qt, ТК XView, OpenWindows, OpenGL, GTK + и mnozhe-
Поривите други. Всеки клас описва библиотека, след като графичен елемент, методът дръжки на този и други класове.
В случай на Java технологията се усложнява от факта, че заявлението Java трябва да работят в такива, или поне в много графични среди. Имаме нужда от клас библиотека, която е независима от конкретната графична система.
В първата версия JDK проблем е решен, както следва: са разработени интерфейс, съдържащ методи на графични обекти. Уроци Java графична библиотека изпълнение на тези интерфейси за създаване на приложения. методи Java приложения на тези интерфейси се използват за поставяне и преместване на графични обекти променят своите размери, възрази взаимодействие един с друг.
От друга страна, да се работи с екрана в определена графична среда, тези интерфейси се прилагат във всеки вид от тях поотделно. Всеки GUI се прави по свой собствен начин, с помощта на самата обвивка с помощта на графични библиотеки на операционната система.
Част III. Създаване на GUI и аплети
Тези интерфейси се наричат партньорски интерфейси.
Java библиотека от класове на базата на партньорски връзки, наречен AWT (Abstract Window Toolkit). За да се покаже на обекта, създаден в заявлението Java и партньорска базиран интерфейс, той създава един чифт (партньорска към партньорската) възрази графична подсистема на операционната система, което се показва на екрана. Ето защо, AWT графични обекти във всяка графична среда са от формата, която е характерна за тази среда: в MS Windows, мотив, OpenLook, OpenWindows, - всички прозорци, създадени в AWT, прилича на "родния" прозорци на този десктоп среда.
Чифт обекти, които реализират една партньорска интерфейс, който тясно си взаимодействат по време на изпълнение. Промяна на обект в Java промяна заявление GUI обект веднага предполага, както и промяна неговата поява на екрана.
Това е така, защото на това осъзнаване на своите връстници, интерфейси и други "естествени" (местни) методи, написани предимно в C ++, е необходимо за всяка платформа, за да освободи своя собствена версия на JDK.
Във версията на JDK 1.1 AWT библиотека е с нов дизайн. Тя добавя възможността за създаване на компоненти изцяло написани на Java и не са зависими от peerinterfeysov. Такива компоненти стават известни като "светлина" (лек), за разлика от компонентите реализирани интерфейси чрез партньорската наречените "тежки" (тежки).
"Светлина" компоненти всички изглеждат по същия начин, запазват посочили при създаването му форма (изглеждате и се чувствате). Освен това, приложението, така че да може да се развива, за да стартирането си може да избере всеки конкретен вид: "Мотив", "Метал", "Windows 95" или дори някой друг и променете изгледа във всяка точка на работа.
Това е една интересна особеност на "леки" компоненти, наречени PLF (за включване вид и усещане). Това намаление понякога се пише като "plaf".
В същото време той е създал богата библиотека на "леки" компонентите на Java наречените суинг. Тя бе пренаписана всички компоненти AWT библиотека, така че компонентите Swing библиотеката могат да се използват самостоятелно, независимо от факта, че всички от нейните класове удължи класове AWT библиотеката.
Swing библиотека клас се предлага като допълнение към JDK 1.1. В следващата версия на Java SE JDK е включена заедно с AWT графична библиотека като основен клас, който реализира идеята за "100% Pure Java".
В Java SE библиотека AWT значително разширена не само Swing библиотеката, но също така и добавянето на нови инструменти за рисуване, текст и изображение изход, известни като Java 2D. и означава реализиране на метода на движещ се текст за хващане (Плъзгане и пускане).
В допълнение, Java SE включва нови рамкови методи I / O вход метод и средства за връзка с допълнителни входно / изходни устройства като светлина писалка или клавиатура Брайл, наречен достъпност.
Всички тези инструменти Java SE: AWT, Swing, Java 2D, DnD, методите за въвеждане
Рамка и Достъпност - направи библиотека на Java графични инструменти nazvan-
солна JFC (класове Фондация Java).
Описание на всяка една от тези средства ще се направи цяла книга, така че трябва да се ограничим само с представяне на основните средства за библиотеките AWT и Swing.
Компонент и Контейнер
Основната идея на графичен потребителски интерфейс (GUI) - компонент (компонент) графична система. на български език, думата "компонент" означава съставна част, елемент от нещо, но в графичен интерфейс, тази концепция е много по-конкретни. Той е отделен, изцяло специфичен елемент, който може да се използва в графичен интерфейс независимо от другите елементи. Например, поле за въвеждане, един бутон, лентата с менютата, превъртете радио бутон (превключвател) бар,. също на нейните компоненти - самия прозорец за кандидатстване. Компонентите могат да бъдат невидими, например панел обединяване компоненти, също е компонент.
Вие няма да се изненадате да научите, че в класа на AWT Компонент се счита за компонент на обекта или който и да е обект на клас, който се простира на класа компонент. Компонентът клас съдържа общи методи работи с всеки компонент на графичния потребителски интерфейс. Този клас - центъра на AWT библиотека.
Всеки компонент преди дисплей поставя в контейнер (контейнер). Контейнер "знае" как да се поставят елементите на екрана. Разбира се, в езикови Ремаркета Java - Container е обект или някоя от неговото продължение клас. Директен наследник на този клас - класът JComponent - на върха на йерархията от многото компоненти на библиотеката
Поставянето на компонент - Компонент клас обект или неговата разширение, добавете към предварително създаден обект клас контейнер или една от неговите методи разширения контейнер добавя ().
се класа на контейнера е невидим компонент, тя разширява Компонент клас. По този начин, в контейнер, заедно с компонентите на контейнера може да се постави, в които има всякакви други компоненти, като по този начин се постигне по-голяма гъвкавост на компоненти.
Основният прозорец на програмата, активно си взаимодействат с операционната система, е необходимо да се изгради на правилата за графичното му система. Тя трябва да бъде преместен по екрана, преоразмерявате, да отговорим на мишка и клавиатура. Кутията трябва да бъде най-малко следните стандартни компоненти:
заглавната лента (заглавната лента), от лявата страна, която искате да поставите в контекстното меню бутон и дясното - сгъване и разгъване бутон на прозореца и кликнете приложението е затворен;
кутия трябва да бъде заобиколена от рамка (граница), в отговор на действия на мишката.
Прозорец с тези компоненти в готов вид, описан в рамката на класа. За да създадете прозорец в AWT библиотеката, достатъчно, за да разширението клас на рамката на класа. както е показано в Пример 8.1. Само осем реда текст, както и прозореца е готова.
Обявата 8.1. Твърде просто AWT прозореца на приложението
клас TooSimpleFrame простира Frame
публично статично невалидни основни (String [] опцията)
Frame FR = нов TooSimpleFrame (); fr.setSize (400, 150); fr.setVisible (истина);
TooSimpleFrame клас има всички свойства на класа Frame. Това е неговото удължаване. Той създава инстанция на ФР на прозореца. и метода на setSize () определя размера на прозореца на екрана - 400,150 пиксела. Ако не уточни размера на прозореца, на екрана ще бъде минималният размер на екрана - ще видите само заглавната лента. Разбира се, след това можете да се излегнете на прозореца с мишката, за да всякакъв размер.
Тогава се появява диалогов прозорец на екрана, като setVisible (вярно). Факт е, че от гледна точка на AWT библиотеки на създайте прозорец - след това изберете областта на памет, пълна с желаните пикселите, и съдържанието на дисплея на тази област на екрана - това е едно предизвикателство, което и решава да setVisible (вярно) метод.
Разбира се, това не е подходящ за прозореца. Да не говорим за факта, че той не разполага с титла, на прозореца не може да бъде затворена. Въпреки че може да се мести по екрана, преоразмерявате, минимизирате в лентата на задачите, и разкрива, но то е пълно екипа не сме програмирани. Прозорецът не може да се затвори или да кликнете върху бутона върху бутона с кръст в горния десен ъгъл на прозореца, или комбинация от клавиши
ключове ционни
Обява 8.2 до програмата в списъка 8.1 добавен заглавната лента и се обадете на метод, който позволява да се попълни заявлението.
Обявата 8.2. Обикновено прозореца на приложението
внос java.awt * .; внос java.awt.event * .;
клас SimpleFrame простира Frame
обществени невалидни windowClosing (WindowEvent EV) публично статично невалидни основни (String [] опцията) За да се покаже различните варианти на програми, тя добавя дизайнер SimpleFrame клас. позовавайки се на конструктора му суперкласа Frame. който записва неговият аргумент е в заглавната лента на прозореца. Дизайнерът се премества на размера на прозореца инсталация, ще го покаже и добави препратка към addWindowListener (метод). отговаря на един прозорец. Аргументът този метод се пропуска случай на анонимен вътрешен клас, който се простира на клас WindowAdapter. Този неназован клас изпълнява метод windowClosing (). обработка опитайте да затворите прозореца. Това изпълнение е много проста - прилагането прекрати статичен метод изхода (System клас). Прозорецът се затваря автоматично, като в същото време. Всичко това ние ще анализираме по-подробно в Глава 15. За сега, просто добавете редовете, показани на всичките си програми, които използват AWT библиотеката, за да затворите прозореца и да се прекрати приложението. Така че, готови да се боксира. Но тя е празна. да го установят, според традицията, поздрава "Здравей, XXI век World!", обаче, леко променена. Обявата 8.3 показва пълна програма на това заключение, и Фиг. 8.1 показва прозореца. Обявата 8.3. Graphics програма с поздрав внос java.awt * .; внос java.awt.event * .; клас HelloWorldFrame простира Frame g.setFont (нова Font ( "Шериф", Font.ITALIC | Font.BOLD, 30)); g.drawString ( "Hello, World XXI век!", 20, 100); публично статично невалидни основни (String [] опцията)
Frame е = нов HelloWorldFrame ( "Здравей, свят на XXI век!"); f.setSize (400, 150); f.setVisible (истина); f.addWindowListener (нова WindowAdapter ()
обществени невалидни windowClosing (WindowEvent EV)