Bibliotekat grafike java. Një përmbledhje e shkurtër e kornizave Java GUI dhe aplikacioni im i parë i thjeshtë Swing GUI

Pra, zbatohet logjika e Game of Life. Do të doja të shijoja procesin e soditjes së shumëllojshmërisë së formave të "Jetës" në ekranin e monitorit tim. Çfarë do të nevojitet për këtë?

Vetë dritarja me meny dhe butona, si dhe sjellja e saj do të krijohet duke përdorur bibliotekën Lëkundje. Vizatimi i procesit të evolucionit të "Jetës" tonë - përmes bibliotekës A.W.T.(më saktë, Java 2D). Këto janë dy paketat kryesore për krijimin e GUI-ve në Java.

Puna e AWT fillimisht bazohet në të ashtuquajturat ndërfaqe peer. Në fund të fundit është se nëse është e nevojshme të shfaqet një objekt Java në ekran, sistemi operativ krijon një objekt grafik të çiftuar për të, i cili, në fakt, shfaqet. Këto dy objekte ndërveprojnë me njëri-tjetrin gjatë ekzekutimit të programit. Ky zbatim çon në faktin se çdo platformë duhet të lëshojë JDK-në e saj.

Më vonë, AWT krijoi komponentë që nuk përdorin ndërfaqe kolegësh - komponentë "të lehtë" (të lehtë). Biblioteka e këtyre komponentëve është quajtur Swing. Kjo do të thotë, Swing është, në fakt, një zgjerim i AWT.

Vetë AWT u plotësua me mjete të reja vizatimi dhe shfaqjeje imazhi të quajtura Java 2D.

Do të rendis me një përshkrim të shkurtër elementët kryesorë të Swing.

Blloku themelor i ndërtimit të të gjithë bibliotekës së komponentëve vizualë Swing është Komponenti J. Kjo është superklasa e secilit komponent. Është një klasë abstrakte, kështu që nuk mund të krijoni një JComponent, por përmban fjalë për fjalë qindra funksione që çdo komponent Swing mund t'i përdorë si rezultat i hierarkisë së klasës.

jKorniza(dritarja e aplikacionit) - kontejneri kryesor që ju lejon të shtoni komponentë të tjerë në vete për t'i organizuar dhe për t'i ofruar përdoruesit. JFrame vepron si një urë lidhëse midis pjesëve Swing të pavarura nga OS dhe sistemit operativ aktual në të cilin funksionojnë. JFrame regjistrohet si një dritare me OS dhe kështu merr shumë nga vetitë e njohura të dritares sistemi operativ.

JMenu/JMenuItem/JMenuBar- projektuar për të zhvilluar një sistem menuje në një JFrame. Baza e çdo sistemi menyje është JMenuBar, çdo JMenu dhe JMenuItem krijohet me të. JMenu është një nënklasë e JMenuItem. Megjithatë, ato ndryshojnë në pamje: JMenu përdoret për të përmbajtur JMenuItem dhe JMenu të tjera; JMenuItem aktivizon një veprim kur zgjidhet.

JLabel(etiketë) - përdoret për të përshkruar (tekst ose grafik) elementë të tjerë.

jButton(buton) - komponenti kryesor aktiv që ju lejon të kryeni disa veprime kur shtypet. Përveç metodave standarde që kontrollojnë shfaqjen e komponentit, ai përmban një grup metodash për menaxhimin e gjendjes së tij (aktive / joaktive, të zgjedhura / jo të zgjedhura, miu lart / pa maus, i shtypur / i lëshuar).

JTextField(fusha e tekstit) - lejon përdoruesin të fusë të dhëna tekstuale që mund të përpunohen në program.

JTextArea zgjeron JTextField për të lejuar futjen e linjave të shumta.

JPasswordField(fusha e fjalëkalimit) - një lloj JTextField që ju lejon të fshehni karakteret që futni.

JComboBox(lista e kombinuar) - Lejon përdoruesin të zgjedhë një artikull nga një listë ekzistuese (ose të shtojë një artikull të ri në listë).

JCheckBox(kutia e kontrollit) dhe JRadioButton(butoni i radios) - Ofron opsione që përdoruesi të zgjedhë. JRadioButtons zakonisht grupohen së bashku për t'i dhënë përdoruesit një pyetje me përgjigje të detyruar (përgjigjet janë reciproke ekskluzive - mund të ketë vetëm një përgjigje për pyetje). Pasi të keni zgjedhur një JRadioButton, nuk mund ta hiqni atë derisa të zgjidhni një opsion tjetër nga grupi. JCheckBox funksionon ndryshe. Kjo ju lejon të kontrolloni/çzgjidhni një opsion në çdo kohë dhe të zgjidhni përgjigje të shumta për pyetje. Klasa që lejon që komponentët JCheckBox ose JRadioButton të grupohen së bashku është klasa ButtonGroup.

JSlider— një element për zgjedhjen e një vlere numerike nga një diapazon i paraqitur grafikisht.

JSpinner-është për të zgjedhur nga një grup vlerash. Në këtë është i ngjashëm me JComboBox, megjithëse përdorimi i tyre nuk duhet të jetë i këmbyeshëm. Ju duhet të përdorni JSpinner vetëm për zgjedhje logjikisht të njëpasnjëshme - numrat dhe datat janë perfekte për këtë. JComboBox, nga ana tjetër, është më shumë një zgjedhje e mirë për të përfaqësuar opsione në dukje të rastësishme që nuk kanë asnjë lidhje me njëra-tjetrën.

JToolBar vepron si një kontejner për komponentë të tjerë (JButtons, JComboBoxes, etj.) që së bashku formojnë shiritat e veglave që gjenden në shumicën e aplikacioneve. Shiritat e veglave lejojnë programin të vendosë komandat e përdorura shpesh në një vend të përshtatshëm dhe t'i grupojë ato. Në mënyrë tipike, butonat e shiritit të veglave korrespondojnë me komandat në një menu.

JToolTip- Këto janë "flluska" të vogla që shfaqen kur rri pezull dhe mban kursorin e miut mbi diçka. Ato mund të jenë shumë të dobishme në aplikacione, duke ofruar këshilla veglash për elementët, duke detajuar informacionin, apo edhe duke shfaqur tekstin e plotë të një elementi në UI koncize. Ato aktivizohen në Swing duke lënë kursorin e miut mbi një komponent për një kohë të caktuar; ato zakonisht shfaqen rreth një sekondë pasi miu ndalon dhe mbeten të dukshme për sa kohë që kursori qëndron mbi komponentin.

JOptionPane- një klasë për t'u ofruar zhvilluesve të UI një mënyrë për të lëshuar mesazhe të thjeshta (për një gabim ose informacion tjetër) dhe për të marrë shpejt të dhëna (për shembull, një emër ose numër).

jscrollpane- Lëvizni komponentin për të trajtuar të gjitha veprimet e lëvizjes.

jlistështë një komponent i dobishëm për t'i ofruar përdoruesit shumë opsione për të zgjedhur. Mund ta mendoni si një shtesë JComboBox. JList ofron më shumë zgjedhje dhe shton mundësinë për të zgjedhur zgjedhje të shumta. Zgjedhja midis JList dhe JComboBox është shpesh kjo: nëse keni nevojë për zgjedhje të shumta ose keni më shumë se 15 zgjedhje (megjithëse ky numër nuk është një rregull i përgjithshëm), duhet të zgjidhni gjithmonë JList. Ju duhet të përdorni JList në lidhje me JScrollPane sepse mund të ofrojë më shumë opsione sesa do të përshtaten në zonën e dukshme. JList ka gjithashtu një model të zgjedhur të cilin mund ta vendosni Llojet e ndryshme zgjedhja e opsioneve. Këto lloje janë: zgjedhje e vetme (mund të zgjidhni vetëm një opsion), interval i vetëm (mund të zgjidhni çdo numër opsionesh ngjitur) dhe interval të shumëfishtë (mund të zgjidhni çdo numër opsionesh në çdo kombinim).

Ndërfaqja grafike në Java ka kaluar nëpër një rrugë shumë të mprehtë zhvillimi dhe formimi. Për një kohë të gjatë ai u akuzua për punë të ngadaltë, lakmi për burimet e sistemit dhe funksionalitet të kufizuar.

Java AWT

Përpjekja e parë e Sun për një GUI për Java ishte biblioteka A.W.T.(Abstract Window Toolkit) - një paketë veglash për të punuar me mjedise të ndryshme dritaresh. Sun ka krijuar një shtresë Java që thërret metoda nga bibliotekat e shkruara në C. Metodat e bibliotekës AWT krijojnë dhe përdorin komponentët grafikë të mjedisit operativ. Nga njëra anë, kjo është e mirë, pasi një program Java është i ngjashëm me programet e tjera brenda të njëjtit OS. Por kur e ekzekutoni atë në një platformë tjetër, mund të ketë ndryshime në madhësitë e përbërësve dhe shkronjave që do të prishen pamjen programet.

Për të siguruar multi-platformë A.W.T. Ndërfaqet e thirrjeve të komponentëve janë unifikuar, duke rezultuar në një funksionalitet pak të reduktuar. Dhe grupi i përbërësve doli të ishte mjaft i vogël. Për shembull, nuk ka tabela në AWT dhe ikonat nuk mbështeten në butona. Megjithatë, paketa java.awt përfshihet me Java që në lëshimin e parë dhe mund të përdoret për të krijuar GUI.

Pra, komponentët A.W.T. mos bëni asnjë "punë". Është thjesht një "mbështjellës Java" për kontrollet e sistemit operativ në të cilin funksionojnë. Të gjitha kërkesat për këta komponentë ridrejtohen te sistemi operativ, i cili kryen të gjithë punën.

Burimet e përdorura A.W.T. përpiqet të lëshojë automatikisht. Kjo e komplikon pak arkitekturën dhe ndikon në performancën. Të shkruash diçka serioze duke përdorur AWT do të jetë disi e vështirë. Tani përdoret vetëm për aplikacione.

Konceptet bazë SWING

Pas A.W.T. Sun ka zhvilluar një bibliotekë të komponentëve grafikë Lëkundje, i shkruar tërësisht në Java. 2D përdoret për renderim, i cili sjell me vete disa avantazhe njëherësh. Seti i komponentëve standardë tejkalon shumë AWT për sa i përket shumëllojshmërisë dhe funksionalitetit. Swing e bën të lehtë krijimin e komponentëve të rinj duke trashëguar nga ato ekzistuese dhe mbështet një shumëllojshmëri stilesh dhe lëkurash.

Krijuesit e bibliotekës së re të ndërfaqes së përdoruesit Lëkundje nuk "rishpiku rrotën" dhe zgjodhi AWT si bazë për bibliotekën e tyre. Sigurisht, ne nuk po flisnim për përdorimin e komponentëve specifikë AWT me peshë të rëndë (të përfaqësuar nga klasat Button, Label dhe të ngjashme). Vetëm komponentët me peshë të lehtë siguruan shkallën e kërkuar të fleksibilitetit dhe kontrollueshmërisë. Diagrami i trashëgimisë tregon marrëdhënien midis AWT dhe Swing.

Dallimi më i rëndësishëm Lëkundje nga AWT është se komponentët Swing nuk janë fare të lidhur me sistemin operativ dhe për këtë arsye janë shumë më të qëndrueshëm dhe më të shpejtë. Komponentë të tillë quhen peshë të lehtë në Java dhe të kuptuarit e parimeve bazë se si funksionojnë ato do të ndihmojë shumë për të shpjeguar se si funksionon Swing.

Kontejnerët e Nivelit të Lartë Swing

Për krijimin GUI aplikacionet duhet të përdorin komponentë të veçantë të bibliotekës Swing të quajtur kontejnerë të nivelit të lartë. Ato janë dritare të sistemit operativ që presin komponentët e ndërfaqes së përdoruesit. Kontejnerët e nivelit të lartë përfshijnë dritaret JFrame dhe JWindow, kutinë e dialogut JDialog dhe aplikacionin JApplet (i cili nuk është një dritare, por synon gjithashtu të shfaqë një ndërfaqe në shfletuesin që ekzekuton këtë aplet). Kontejnerët Swing të nivelit të lartë janë komponentë me peshë të rëndë dhe janë një përjashtim nga rregulli i përgjithshëm. Të gjithë komponentët e tjerë të Swing janë të lehta.

E thjeshtë Lëkundje Shembull i ndërfaqes së dritares jKorniza.

Import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; klasa publike JFrameTest (publik 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() ( public void run() (createGUI(); ) )); ) )

Konstruktor JFrame () pa parametra krijon një dritare të zbrazët. Konstruktor JFrame (titulli i vargut) krijon një dritare boshe me titullin e titullit. Për të krijuar një program të thjeshtë me një dritare të zbrazët, duhet të përdorni metodat e mëposhtme:

  • setSize(int width, int height) - përcaktimi i madhësisë së dritares;
  • setDefaultCloseOperation(operacioni int) - përcaktimi i veprimit në përfundimin e programit;
  • setVisible(boolean i dukshëm) - bëje dritaren të dukshme.

Nëse nuk e përcaktoni madhësinë e dritares, atëherë ajo do të ketë një lartësi zero, pavarësisht se çfarë është në të. Dimensionet e dritares përfshijnë jo vetëm zonën e "punës", por edhe kufijtë dhe shiritin e titullit.

Metoda setDefaultCloseOperation përcakton veprimin që duhet ndërmarrë kur "dalja nga programi". Për ta bërë këtë, kaloni konstantën EXIT_ON_CLOSE, të përshkruar në klasën JFrame, si parametrin e funksionimit.

Si parazgjedhje, dritarja është krijuar e padukshme. Për të shfaqur dritaren në ekran, thirret metoda setVisible me parametrin true. Nëse e quani me parametrin false, dritarja do të bëhet e padukshme.

GUI java swing Shembull i krijimit të dritares jKorniza treguar në figurën e mëposhtme.

Për të lidhur bibliotekën Lëkundje aplikacioni duhet të importojë bibliotekën javax.luhatje.

Sa herë që krijohet një kontejner i nivelit të lartë, qoftë një dritare e rregullt, kuti dialogu ose aplet, konstruktori i kontejnerit krijon Paneli rrënjësor i JRootPane. Kontejnerët Swing të nivelit të lartë sigurojnë që komponentët e tjerë nuk mund të "zvarriten" jashtë JRootPane.

Rrënja e zbehtë JRootPane shton një veçori "thellësi" në kontejnerë, duke siguruar aftësinë jo vetëm për të vendosur komponentët njëri mbi tjetrin, por gjithashtu, nëse është e nevojshme, për t'i ndërruar ato, për të rritur ose ulur thellësinë e përbërësve. Kjo veçori është e nevojshme kur krijoni një aplikacion me shumë dokumente. Lëkundje, dritaret e të cilit përfaqësojnë komponentë të lehtë të vendosur mbi njëri-tjetrin, si dhe menutë dhe këshillat e veglave me rënie (konteksti).

Figura e mëposhtme tregon qartë strukturën e panelit rrënjë JRootPane.

Paneli rrënjësor JRootPaneështë një kontejner që trashëgon nga klasa bazë Swing JComponent. Në këtë kontejner, një menaxher i veçantë i paraqitjes, i implementuar në klasën e brendshme RootPaneLayout, është përgjegjës për paraqitjen e komponentëve. Ky menaxher i paraqitjes është përgjegjës për të siguruar që të gjitha pjesët përbërëse të panelit rrënjësor të vendosen ashtu siç duhet: paneli me shtresa zë të gjithë hapësirën e dritares; FRAME_CONTENT_LAYER e tij përmban shiritin e menusë dhe panelin e përmbajtjes, dhe mbi të gjitha është një panel transparent.

Të gjithë përbërësit e panelit rrënjë JRootPane mund të merret ose ndryshohet. Ai ka një sërë metodash për këtë. Në mënyrë programore JRootPane mund të merret duke përdorur metodën getRootPane().

Përveç kontejnerëve të nivelit të lartë, paneli rrënjë përdoret në dritaret e brendshme JInternalFrame të krijuara në aplikacione me shumë dokumente dhe të vendosura në "desktop" JDesktopPane. Kjo ju lejon të harroni se këto dritare janë komponentë të zakonshëm të lehtë dhe të punoni me to si me kontejnerë të vërtetë të nivelit të lartë.

Paneli me shtresa JLayeredPane

Në bazën e panelit rrënjësor (kontejnerit) shtrihet i ashtuquajturi panel me shtresa JLayeredPane A që zë të gjithë hapësirën e disponueshme në kontejner. Pikërisht në këtë panel janë vendosur të gjitha pjesët e tjera të panelit rrënjë, duke përfshirë të gjithë komponentët e ndërfaqes së përdoruesit.

JLayeredPane përdoret për të shtuar një veçori thellësie në enë. Kjo do të thotë, paneli me shumë shtresa ju lejon të organizoni një dimension të tretë në enë, përgjatë së cilës ndodhen shtresat (shtresat) e komponentit. Në një enë normale, vendndodhja e një komponenti përcaktohet nga një drejtkëndësh që tregon se sa nga kontejneri zë përbërësi. Kur shtoni një komponent në një panel me shumë shtresa, duhet të specifikoni jo vetëm drejtkëndëshin e zënë nga komponenti, por edhe shtresën në të cilën do të vendoset. Një shtresë në një panel me shtresa përcaktohet nga një numër i plotë. Sa më i madh të jetë numri që përcakton shtresën, aq më i lartë është shtresa.

Komponenti i parë i shtuar në enë është më i lartë se përbërësit e shtuar më vonë. Më shpesh, zhvilluesi nuk merret me pozicionet e komponentëve. Kur shtoni komponentë, pozicioni i tyre ndryshon automatikisht. Sidoqoftë, paneli me shtresa ju lejon të ndryshoni pozicionin e komponentëve në mënyrë dinamike, pasi ato të shtohen në kontejner.

Aftësitë e paneleve me shtresa përdoren gjerësisht nga disa komponentë Lëkundje. Ato janë veçanërisht të rëndësishme për aplikacionet me shumë dokumente, këshillat e veglave dhe menutë. Multidokument Lëkundje aplikacionet përdorin një enë të veçantë JDesktopPane("desktop") trashëguar nga JLayeredPane Një që mban dritaret e brendshme Swing. Shumica karakteristika të rëndësishme aplikacioni me shumë dokumente - vendndodhja e dritares "aktive" mbi të tjerat, minimizimi i dritareve, zvarritja e tyre - sigurohet nga mekanizmat e panelit me shumë shtresa. Përfitimi kryesor i përdorimit të një paneli me shtresa për këshillat e veglave dhe menutë është se ato funksionojnë më shpejt. Në vend që të krijoni një dritare të re me peshë të rëndë për çdo këshillë mjeti ose meny, e vendosur sipër komponentit në të cilin u kërkua këshilla e veglave ose menyja, Lëkundje krijon një komponent të shpejtë të lehtë. Ky komponent vendoset në një shtresë mjaft të lartë të panelit të shtresuar sipër në pirgun e të gjithë komponentëve të tjerë dhe përdoret për të shfaqur një këshillë veglash ose meny.

Paneli me shumë shtresa ju lejon të organizoni një numër të pakufizuar shtresash. Struktura JLayeredPane përfshin disa shtresa standarde, të cilat përdoren nga të gjithë komponentët Swing, gjë që siguron që të gjithë mekanizmat e panelit të shtresuar të funksionojnë siç duhet. Shtresat standarde JLayeredPane janë paraqitur në figurën e mëposhtme.

Shtresa Default përdoret për të pritur të gjithë komponentët normalë që janë shtuar në kontejner. Kjo shtresë përmban dritaret e brendshme të aplikacioneve me shumë dokumente.

Shtresa Palette është projektuar për të pritur dritare me një grup mjetesh, të cilat zakonisht mbivendosen me pjesën tjetër të ndërfaqes. Paneli JDesktopPane ju lejon të krijoni dritare të tilla, të cilat i vendosin në këtë shtresë.

Shtresa Modal kishte për qëllim të presë kuti dialogu modale të lehta. Megjithatë, kutitë e tilla dialoguese nuk janë zbatuar ende, kështu që kjo shtresë nuk përdoret aktualisht në Swing.

Shtresa më e përdorur për menutë kërcyese dhe këshillat e veglave.

Shtresa më e lartë. Projektuar për operacione të tërheqjes dhe lëshimit, të cilat duhet të jenë qartë të dukshme në ndërfaqen e programit.

Një shembull i vogël i një JLayeredPane me një panel me shtresa tregon se si të shtoni komponentë në shtresa të ndryshme dhe se si shtresat grumbullohen njëra mbi tjetrën:

Importo javax.swing.*; import java.awt.*; // Klasa për vizatimin e dy llojeve të figurave me klasën e tekstit Figura zgjeron JComponent ( serial i gjatë statik privat i gjatëVersionUID = 1L; private Ngjyra e ngjyrave; tip int privat; teksti privat i vargut; // parametrat: ngjyra dhe lloji i figurës Figura(Ngjyra e ngjyrës, lloji int, teksti i vargut) ( this.color = color; this.type = type; this.text = text; setOpaque(false); ) public void paintComponent(Graphics g ) ( // vizatimi i formës g.setColor(ngjyra); çelësi (lloji) (rasti 0: g.fillOval(0, 0, 90, 90); pushim; rasti 1: g.fillRect(0, 0, 130, 80 ); break; ) g.setColor(Color.yellow); g.drawString(tekst, 10, 35); ) ) klasa publike JLayeredPaneTest zgjeron JFrame (seriali i gjatë statik privat privatVersionUID = 1L; publike JLayeredPaneTest() ( // krijo një dritare super ("Shembulli test i shtresave"); // dil kur dritarja mbyllet setDefaultCloseOperation(EXIT_ON_CLOSE); // përcaktimi i një paneli me shtresa JLayeredPane lp = getLayeredPane (); // duke krijuar tre forma Figura Figura 1 = Figura e re (Ngjyra. e kuqe , 0, "Figura kërcyese"); Figura Figura 2 = Figura e re (Ngjyra. blu, 0, "Figura 1"); Figura figura 3 = Figura e re (Ngjyra.cyan, 1, "Figura 2"); // gjeni format në dritaren figure1.setBounds (10, 40, 12 0,120); figura2.setBounds(60, 120, 160, 180); figura3.setBounds(90, 55, 250, 180); // shtimi i formave në shtresa të ndryshme lp.add(figura1, JLayeredPane.POPUP_LAYER); lp.add(figura2, JLayeredPane.PALETTE_LAYER); lp.add(figura3, JLayeredPane.PALETTE_LAYER); // ndryshoni pozicionin e njërës prej figurave lp.setPosition(figura3, 0); // përcaktimi i madhësisë dhe hapja e dritares setSize(280, 250); setVisible (e vërtetë); ) public static void main (String args) ( JFrame.setDefaultLookAndFeelDecorated(true); i ri JLayeredPaneTest(); ) )

Shembulli krijon një dritare të vogël jKorniza dhe komponentë të shumtë të Figura shtohen në panelin e shtresuar. Për të marrë një panel me shtresa në çdo enë Swing të nivelit të lartë, thjesht telefononi metodën getLayeredPane ().

Klasa ndihmëse Figura trashëgon vetitë e klasës bazë JComponent dhe ju lejon të vizatoni dy lloje formash (rrathë dhe drejtkëndësha) me ngjyra të ndryshme. Parametrat për vizatimin e formave vendosen në konstruktorin e klasës.

Kur përcaktoni një ndërfaqe, krijohen tre forma me ngjyra të ndryshme (dy rrathë dhe një drejtkëndësh). Rrethi vendoset në shtresën POPUP_LAYER dhe drejtkëndëshat vendosen në shtresën PALETTE_LAYER. Kur vendosni komponentë, specifikohen koordinatat e tyre absolute të ekranit, sepse menaxherët e zakonshëm të vendndodhjes nuk funksionojnë në një panel me shtresa.

Në fund, pozicioni i njërit prej drejtkëndëshave ndryshohet në mënyrë që të jetë i pari në shtresë, megjithëse fillimisht ishte shtuar i dyti. Kur të ekzekutoni aplikacionin, do të shihni se paneli i shtresuar funksionon dhe i rregullon me kujdes komponentët sipas shtresave dhe pozicioneve të tyre.

Në aplikimet konvencionale, paneli me shtresa përdoret rrallë drejtpërdrejt, në të cilin ai kryen funksionet e tij në mënyrë të padukshme. Sidoqoftë, ndonjëherë ndihmon për të krijuar efekte të mahnitshme dhe ndërfaqe të pazakonta, duke lejuar, për shembull, vendosjen e animacionit ose videos në krye të komponentëve të zakonshëm pa kërkuar përpjekje dhe mashtrime çnjerëzore nga zhvilluesi.

Paneli i Përmbajtjes

ContentPane është pjesa tjetër e panelit rrënjë dhe përdoret për të pritur komponentët e ndërfaqes së përdoruesit të programit. Paneli i Përmbajtjes zë pjesën më të madhe të hapësirës së panelit të shtresuar (përveç hapësirës që zë shiriti i menusë). Për të parandaluar që paneli i përmbajtjes të mbulojë komponentët që shtohen më pas në dritare, paneli me shtresa e vendos atë në një shtresë speciale shumë të ulët të quajtur FRAME_CONTENT_LAYER, me numër -30000.

Mund të hyni në panelin e përmbajtjes duke përdorur getContentPane () Klasa JFrame. Duke përdorur metodën add (Component Component), ju mund të shtoni çdo kontroll në të. Zëvendësoni Paneli i Përmbajtjesçdo panel tjetër të llojit JPanel, mund të përdorni metodën setContentPane()

Një shembull i shtimit të një butoni në panelin e përmbajtjes:

JButton newButton = new JButton(); getContentPane().add(newButton);

Si rezultat, marrim një dritare me një buton. Butoni zë të gjithë zonën e disponueshme të dritares. Ky efekt nuk është i dobishëm në të gjitha programet, kështu që ju duhet të përdorni mënyra të ndryshme për të rregulluar elementët në panel.

Paneli i përmbajtjes mund të zëvendësohet plotësisht. Merrni parasysh sa vijon Lëkundje shembull i panelit të përmbajtjes Paneli i Përmbajtjes.

Importo javax.swing.*; Klasa publike ContentPaneReplace zgjeron JFrame ( serial i gjatë statik privat, i gjatëVersionUID = 1L; publike ContentPaneReplace() ( super("Test ContentPane"); setDefaultCloseOperation(EXIT_ON_CLOSE); // Krijo një panel me dy butona përmbajtja e JPanel = përmbajtja e re JPanel. add (new JButton("Familja")); contents.add(new JButton("School")); // Zëvendësimi i panelit të përmbajtjes setContentPane(përmbajtja); // Përcaktimi i madhësisë së dritares setSize(200, 100); // Hapja e dritares setVisible (e vërtetë); ) publik statik void main (String args) ( JFrame.setDefaultLookAndFeelDecorated(true); ContentPaneAdd i ri (); ) )

Shembulli krijon një dritare të vogël dhe një panel me dy butona, e cila është më pas setContentPane() zëvendëson panelin e përmbajtjes së dritares. Kështu, u përdor një zëvendësim në vend të një shtimi më të thjeshtë - duke thirrur metodën e shtimit (). Ndërfaqja e dritares tregohet në pamjen e mëposhtme të ekranit.

Paneli i përmbajtjes Paneli i Përmbajtjes në vetvete nuk është asgjë e veçantë. Thjesht duhet të mbani mend se përbërësit janë shtuar në të.

JOptionPane transparente

Paneli transparent JOptionPane vendosur si paneli rrënjë mbi të gjithë elementët e panelit të shtresuar. Vendosja e JOptionPane trajtohet nga paneli rrënjë, i cili vendos panelin transparent mbi panelin e shtresuar në mënyrë që të mbulojë plotësisht të gjithë zonën e dritares, duke përfshirë zonën e zënë nga shiriti i menusë.

JOptionPane përdoret rrallë në aplikacione, kështu që si parazgjedhje paneli rrënjë e bën atë të padukshëm, gjë që redukton ngarkesën në sistemin e vizatimit. Mbani në mend se nëse bëni një panel transparent të dukshëm, duhet të siguroheni që ai të jetë transparent (vetia e tij opake është false), sepse përndryshe do të mbulojë të gjithë elementët e tjerë të panelit rrënjë dhe pjesa tjetër e ndërfaqes do të jetë e padukshme. .

Në cilat raste mund të përdoret një panel transparent? JOptionPane? Mund të përdoret për të përcaktuar veçoritë e aplikacionit që do të kërkonin përpjekje të konsiderueshme për t'u zbatuar nga e para. Paneli transparent mund të përshtatet për testimin e automatizuar të ndërfaqes së përdoruesit. Ngjarjet e sintetizuara në të ju lejojnë të gjurmoni rezultatet e ndërmjetme të korrigjimit. Ndonjëherë kjo qasje është shumë më efektive sesa testimi manual.

Paneli transparent JOptionPane mund të përdoret për një animacion fantastik që "lundron" mbi të gjithë komponentët, duke përfshirë shiritin e menusë, ose për kapjen e ngjarjeve nëse disa prej tyre duhet të trajtohen përpara se të dërgohen në ndërfaqen kryesore.

Një shembull i përdorimit të një Swing JOptionPane transparent:

// Duke përdorur një import transparent JOptionPane java.awt.Dimension; import java.awt.Font; importoni java.awt.event.WindowEvent; importoni java.awt.event.WindowListener; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.UImanager; Klasa publike JOptionPaneTest zgjeron JFrame (Seriali i gjatë statik privat privat VersionUID = 1L; Fonti përfundimtar statik publik FONT = Font i ri ("Verdana", Font.PLAIN, 11); boshllëk publik statik createGUI() ( JFrame frame = i ri JFrame ("Test JOptionPane "); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowListener() (public void windowActivated(WindowEvent) () public void windowClosed(WindowEvent ngjarja) () public void windowEventDeactivated windowDeiconified(ngjarje WindowEvent) () public void windowIconified(WindowEvent) () public void window Opened(WindowEvent) () public void windowClosing(ngjarje WindowEvent) ( Opsionet e objektit = ( "Po", "Jo!" ); int rc = JOptionPane.showOptionDialog(event.getWindow(), "Mbyll dritaren?", "Konfirmo", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opsione, opsione); (false);System.exit(0); ) ) )); JLabel label = new JLabel ("Përdor panel transparent kur mbyll dritaren"); frame.getContentPane().add(label); frame.setPreferredSize(dimensioni i ri(350, 80)); kornizë.paketë(); frame.setLocationRelativeTo(null); frame.setVisible(true); ) 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(e vërtetë); JDialog.setDefaultLookAndFeelDecorated(true); createGUI(); ) )); ) )

Nëse metoda setDefaultCloseOperation kalon një konstante JFrame.EXIT_ON_CLOSE, atëherë kur dritarja mbyllet, aplikacioni do të ndalojë së punuari. Në shembull, një konstante i kalohet kësaj metode JFrame. MOS_NOTHING_ON_CLOSE në mënyrë që asgjë të mos ndodhë kur dritarja është e mbyllur. Dalja nga aplikacioni në shembull bëhet nga dëgjuesi JFrame WindowListener në metodë Mbyllja e dritares. Kur dritarja mbyllet, metoda e mbylljes së dritares thirret me një parametër të ngjarjes WindowEvent, i cili në një JOptionPane transparent Swing hap një dialog konfirmimi.

Pamja e mëposhtme e ekranit tregon dy dritare aplikacioni. Dritarja kryesore e sipërme. Mbyllja e kësaj dritare hap kutinë e dialogut të konfirmimit të qëllimit më të ulët.

Shiriti i menusë JMenuBar

Nje nga karakteristika të rëndësishme përdorimi i panelit rrënjësor të JRootPane në Swing është nevoja për të vendosur një shirit menuje në dritare JMenuBar. Një aplikacion serioz nuk mund të ndërtohet pa një lloj menyje për të hyrë në funksionet e programit. Biblioteka Swing ofron mundësi të shkëlqyera për të krijuar meny të përshtatshme JMenuBar që janë gjithashtu komponentë të lehtë.

Menu bar JMenuBar vendoset në një panel me shtresa në një shtresë të veçantë FRAME_CONTENT_LAYER dhe zë një hapësirë ​​të vogël në krye të dritares. Gjatësia e shiritit të menusë është e barabartë me madhësinë e dritares. Gjerësia e shiritit të menusë varet nga komponentët që përmban.

Paneli rrënjë siguron që paneli i përmbajtjes dhe shiriti i menusë JMenuBar nuk mbivendosen. Nëse shiriti i menysë nuk kërkohet, atëherë paneli rrënjë përdor të gjithë hapësirën për të akomoduar panelin e përmbajtjes.

Shembuj të lëkundjes

Kodet burimore të shembujve të diskutuar në tekstin e faqes mund të shkarkohen.

Paralajmërim

Ndryshe nga seancat e mëparshme, ku në thelb kemi vepruar mbi parimin "bëj si bëj unë" dhe folëm për koncepte dhe detaje teknike në atë që quhet "në gishta", stili i prezantimit, duke filluar nga ky mësim, do të ndryshojë disi dhe do të jetë më teknik.

Kjo, mjerisht, nuk mund të shmanget, sepse. herët a vonë do të duhet të arrijmë në një pikë, pas së cilës qasja "në gishta" bëhet e paqëndrueshme. Tani po vjen ai moment. Pra, le të mbledhim guximin, të përveshmë mëngët dhe të fillojmë.

Në mësimin e mëparshëm () formuam dhe shfaqëm një dritare grafike në ekranin e monitorit dhe gjatë rrugës zgjidhëm disa probleme në lidhje me pamjen dhe vendndodhjen e saj. Tani do të diskutojmë se çfarë ka mbetur prapa skenave.

Ju ndoshta keni vënë re se në fillim të kodit burimor ka dy rreshta të mëposhtëm:

import java.awt.*;

import javax.swing.*;

Këtu duhet të zgjatemi pak. Kujtojmë që përmendëm më herët se mjedisi Programimi Java përfshin shumë biblioteka të krijuara për të mbështetur rrjetet, grafika, operacionet e bazës së të dhënave, mesazhet, etj. Bibliotekat janë ato që i japin Java gjithë fuqinë dhe shkathtësinë.

Në Java, në vend të termit "bibliotekë", përdoret koncepti "paketë". Linjat e mësipërme thjesht lidhin paketat e nevojshme për të formuar një ndërfaqe grafike. Më vonë do të shihni se do të përdorim edhe paketa të tjera, por tani për tani na mjaftojnë këto të dyja.

Paketat përfshijnë klasat dhe ndërfaqet e nevojshme (ne do të flasim për ndërfaqet në kohën e duhur) që ofrojnë një ose një tjetër funksionalitet të aplikacionit të ardhshëm. Prania e një ylli ("*") tregon që programuesi po importon të gjithë përmbajtjen e paketës, pa tregues i saktë klasat ose ndërfaqet që përmban. Mund të duket se në rastin e paketave të mëdha, kodi i objektit që rezulton mund të jetë shumë i madh, por mos u shqetësoni: përpiluesi Java është mjaft i zgjuar për të përdorur vetëm atë që programit tuaj i nevojitet vërtet; gjithçka që programit nuk i nevojitet, përpiluesi thjesht nuk do të përfshijë në kodin e objektit. Nëse dëshironi, mund të përdorni një formë paksa të ndryshme të përfshirjes së paketave, për shembull,

import java.awt.window;

import javax.swing.JFrame;

por kjo supozon se programuesi tashmë ka një njohuri të mirë të strukturës dhe aftësive të këtyre paketave. Ne do të përdorim formën më të thjeshtë të lidhjes së paketave të treguara më parë.

Importimi (lidhja) e një pakete me programin në zhvillim bëhet me fjalën kyçe import të ndjekur nga emri i paketës. Çdo paketë duhet të importohet veçmas (d.m.th. nuk mund të shkruani import java.awt.*, javax.swing.*;). Sigurisht, vëllimi i kodit burimor është rritur disi, por shumë pak. Të gjitha klasat dhe ndërfaqet që përbëjnë programin tuaj duhet të vendosen rreptësisht pas konstruksionit të importit, përndryshe përpiluesi do të gjenerojë një mesazh gabimi përpilimi.

Paketa e parë (duke filluar me java.awt) parashikon kryesisht ndërveprimin e programeve Java me nënsistemin grafik të sistemit operativ. Kujtojmë se Java është një gjuhë programimi ndër-platformë dhe gjeneron një kod të vetëm objekti pavarësisht nga sistemi operativ në të cilin do të ekzekutohet ky kod. Prandaj, Java "detyrohet" të aksesojë burimet e ofruara nga sistemi operativ që është i instaluar në kompjuterin e përdoruesit. Një burim i tillë është grafika (përveç grafikës, Java thërret "shërbimet" e sistemit operativ për të hyrë në sistemi i skedarëve dhe burime të tjera). Pra, paketa java.awt.* lejon ndërfaqet grafike të shkruara në Java të përdorin aftësitë grafike të sistemit operativ dhe të shfaqen në objektet grafike të krijuara në Java. programet Java, në ekranin e monitorit. Këtu do të zgjatemi pak.

Të gjithë komponentët grafikë në Java ndahen në dy kategori: peshë e lehtë (e lehtë) dhe peshë e rëndë (peshë e rëndë). Shumica dërrmuese e komponentëve grafikë (butonat, listat, pemët, etiketat, tabelat, etj.) janë të lehta. Kjo do të thotë se sistemi operativ nuk di absolutisht asgjë rreth tyre dhe as nuk "dyshon" ekzistencën e tyre. Komponentët e lehtë i përkasin dritareve (si ai që treguam në mësimin e mëparshëm) dhe shfaqen në ato dritare.

Nëse duam të shfaqim një buton në një dritare, thjesht duhet ta përcaktojmë atë me kod si më poshtë

Button JButtonPressMe = new JButton("Më shtyp");

dhe vendoseni në vendin e specifikuar në dritare (detajet përkatëse do të përshkruhen më vonë). Një buton është një objekt i lehtë dhe sistemi operativ nuk ka njohuri për butonin (butoni nuk ekziston për sistemin operativ). Vetëm dritarja në të cilën ndodhet "e di" për butonin. Dritarja vizaton butonin, përgjon ngjarjet që ndodhin me butonin, rivizaton butonin nëse është errësuar nga diçka, etj. Por vetë dritarja si e tillë - sistemi operativ është i vetëdijshëm për këtë, dhe pikërisht sepse dritarja është një komponent i rëndë. Vetëm dritarja ka qasje në burimet e sistemit operativ (në veçanti, burimet grafike).

Shikoni kodin burimor. Kur llogaritëm koordinatat e këndit të sipërm të majtë të dritares përpara se ta shfaqnim atë në ekran, duhej të dinim rezolucionin e ekranit

Dimensioni sSize = Toolkit.getDefaultToolkit().getScreenSize()

Çfarë mund të sigurojë një informacion të tillë? Sistemi operativ dhe vetëm ai! Më pas, ne përdorëm kodin

provo (UImanager.setLookAndFeel

(UImanager.getSystemLookAndFeelClassName());

kap (Exceptionlfe)()

në mënyrë që pamja e dritares të përputhet me standardin e miratuar në një sistem të caktuar operativ. Çfarë mund të sigurojë një informacion të tillë? Përsëri - sistemi operativ! Pra, për të krijuar ndërfaqe grafike, nuk mund të bëjmë pa paketën java.awt.*.

Kur një dritare shfaqet në ekran, sistemi operativ shpërndan burimet e nevojshme në dritare (kryesisht memorien) dhe dritarja bëhet e dukshme. Më pas, komponentët e lehtë hyjnë në lojë dhe e tëra punë të mëtejshme kryhet pothuajse ekskluzivisht me to.

Paketa e dytë e importit (duke filluar me javax.swing) është përgjegjëse për ndërtimin e GUI-ve të lehta (ka paketa të tjera, por kjo është më e rëndësishmja dhe pothuajse gjithmonë e përdorur). Ne do ta studiojmë dhe zotërojmë këtë paketë gradualisht, sepse. është mjaft i madh dhe mjaft kompleks. Ne do të fillojmë ta bëjmë këtë në mësimin tjetër, por tani për tani, le të shohim linjën e mëposhtme të kodit burimor:

klasa publike MoneyForNothing zgjeron JFrame(

Dy elementë janë të rinj këtu: fjala kyçe e zgjeruar dhe fjala JFrame.

Fjalë kyçe shtrihet (përkthyer si "për të zgjeruar", por në kuptim është afër fjalës "trashëgon" ose me shprehjen "veti dhe sjellje të huazuar") shpreh konceptin themelor të programimit të orientuar nga objekti (ose, më thjesht, programimi i bazuar në klasë ). Ky koncept quhet "trashëgimi". Kjo duhet të trajtohet mirë.

Mos harroni, në një nga mësimet e para () ne diskutuam konceptin e klasave dhe përdorëm një motor makine si shembull. Me gjithë larminë e motorëve dhe modelet e tyre (natyrisht, ne po flasim për motorët me djegie të brendshme), pothuajse të gjithë këta motorë janë të ngjashëm me njëri-tjetrin: secili prej tyre ka cilindra, pistona, bosht me gunga, valvola, etj.

Sigurisht, një motor i madh nafte për një cisternë nuk mund të krahasohet me një motor të vogël alkooli për një model avioni, por ato janë (nëse mund të them kështu) - megjithëse të largët, por të afërm. Ata kanë një paraardhës të përbashkët - një lloj motori abstrakt, dhe vetë motorët janë pasardhësit e tij (edhe nëse janë shumë, shumë të largët).

Në programim, një paraardhës i tillë zakonisht quhet "prind" ose "superklasa", d.m.th. klasë nga e cila rrjedhin klasat e tjera. Emri i superklasës vjen menjëherë pas extensions. Kështu, i përkthyer në gjuhën e zakonshme, fragmenti i kodit të mësipërm mund të lexohet si: "klasa... zgjeron klasën JFrame", "klasa... trashëgon klasën JFrame", ose "klasa... huazon vetitë dhe sjelljen e klasës JFrame" . Klasa JFrame përcakton vetitë dhe sjelljen bazë të dritareve grafike "standarde". Vetë klasa JFrame është në paketën javax.swing.*, dhe kjo është ajo që importuam në fillim të programit.

JFrame është prindi (në terminologjinë Java, një superklasë) i dritareve grafike (ka dritare të tjera, si dialogët, por ne do të flasim për to në kohën e duhur). Nëse i drejtoheni dokumentacionit Java, do të zbuloni se klasa JFrame ka disa konstruktorë, fusha dhe rreth dy duzina metoda që përcaktojnë sjelljen e disa dritareve "standarde". Kështu, klasa jonë e quajtur MoneyForNothing është një trashëgimtare e klasës JFrame (zakonisht ata nuk flasin për trashëgimtarët, por për pasardhësit ose klasat e fëmijëve).

Ju lutemi vini re se vetë klasa JFrame është pasardhëse e disa klasave (shumica e të cilave i përkasin paketës tashmë të njohur java.awt.*):

Për të mos iu kthyer kësaj pyetjeje, ju tërheqim vëmendjen se në krye të hierarkisë së trashëgimisë Java janë klasa nga paketa java.lang.*. Kjo është e vetmja paketë nga JDK që nuk ka nevojë të importohet në mënyrë eksplicite - ajo gjithmonë importohet automatikisht. Duke gjykuar nga kjo "shkallë", klasa JFrame është stër-stërnipi i java.lang.Object (fotografia e mësipërme quhet shkencërisht hierarkia e klasës).

Të gjithë komponentët e ndërfaqes grafike të përdoruesit (shkurtuar si GUI, nga Graphical User Interface), të cilët, kujtojmë, janë elementë me peshë të lehtë, duhet të vendosen brenda dritares kryesore - pasardhësi i JFrame. Për momentin nuk kemi asnjë komponent, por ato do të shfaqen së shpejti - ju premtojmë.

Dhe tani le të kalojmë tek e fundit Kodi i burimit, e cila duket si kjo:

// Konstruktor

para publike për asgjë ()(

setTitle ("Mirë se erdhe në para për asgjë");

setSize(dimensioni i ri (600, 400));

Dimensioni sSize = Toolkit.getDefaultToolkit().getScreenSize(),

fSize = getSize();

nëse (fSize.lartësi > sSize.lartësi) (fSize.lartësi = sSize.lartësi;)

nëse (fSize.width > sSize.width) (fSize.width = sSize.width;)

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

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

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible (e vërtetë);

Para së gjithash, vendosëm titullin e dritares (metoda setTitle(...)). Pastaj vendosen dimensionet horizontale dhe vertikale të dritares (metoda setSize(...)). Pas përcaktimit të rezolucionit të ekranit të monitorit, llogariten koordinatat e këndit të sipërm të majtë të dritares sonë dhe dritarja shfaqet (metoda setLocation (...)) në vendndodhjen e specifikuar në ekran.

Pas kësaj, ne përcaktojmë se çfarë të bëjmë kur mbyllim dritaren në menunë e sistemit; në këtë rast, është e qartë se aplikacioni duhet të përfundojë punën e tij (EXIT_ON_CLOSE). Pas kësaj linje të shkurtër dhe të thjeshtë është në fakt bota çuditërisht interesante dhe intriguese e trajtimit të ngjarjeve. Le të themi menjëherë: të kuptuarit e mekanizmit të trajtimit të ngjarjeve në Java është një moment kyç në zhvillimin e aplikacioneve grafike, dhe duke filluar nga mësimi tjetër, ne do të bëjmë pikërisht këtë.

Së fundi, rreshti i fundit (metoda setVisible(true)) e bën dritaren të dukshme.

Sigurisht, nuk kemi lënë disa detaje, por qëllimi ynë nuk është të tregojmë plotësisht gjithçka dhe gjithçka - ka dokumentacion, libra referimi dhe mësime për këtë. Qëllimi ynë është të japim një drejtim të përgjithshëm, një pikënisje, nga e cila ju (nëse dëshironi dhe me këmbëngulje të mjaftueshme) do të jeni në gjendje t'i zhvilloni programet tuaja në drejtimet e duhura dhe t'i plotësoni ato me funksionalitetin e nevojshëm.

Kjo përfundon mësimin tonë. Gjëja më e rëndësishme që duhet t'i hiqni është koncepti i trashëgimisë (huamarrjes). Ky është me të vërtetë një koncept themelor. Pa të, në Java është e pamundur të krijohet ndonjë kompleks dhe program i dobishëm, prandaj merrni kohën tuaj për të ecur përpara, por edhe një herë rishikoni me kujdes dhe merrni parasysh gjithçka që kemi mësuar deri më tani.

Fat të mirë dhe shihemi së shpejti!

Në këtë artikull të shkurtër dua të përshkruaj procesin e krijimit program i vogël duke mbështetur GUI në gjuhë Java. Supozohet se lexuesi është i njohur me bazat e gjuhës. Java.

Dhe kështu, cilat mjete na duhen:

  • Makina virtuale Java (OpenJDK ose Oracle JDK)
  • Intellij IDEA (ose një IDE tjetër për Java)

Pas instalimit softuerin e nevojshëm, hapur IntelliJ IDEA dhe krijoni një projekt të ri: Skedar -> Projekt i ri…

Unë e emërova projektin guiBase. Siç mund ta shihni në pamjen e ekranit, dosja src nuk përmban asgjë, kështu që ne krijojmë në të klasën tonë kryesore që përmban funksionin kryesore.

Klasa publike Main ( public static void main (String args) ( System.out.println ("Përshëndetje, Govzalla!"); ) )

Shihni përmbajtjen e klasës kryesore më lart. Tani mund të krijojmë një projekt ( ndërtimi i projektit ) dhe drejtojeni ( Vraponi ). Poshtë në terminalin tuaj IDE do të shihni një mesazh Përshëndetje, Govzalla!. Por siç e kuptuat vetë - nuk e mbështet GUI-në.

këtë fazë ne tashmë kemi një program pune, por pa mbështetje GUI. Dhe tani në të njëjtën dosje src krijojnë Formulari GUI: E re -> Formulari GUI

Hapni formën e krijuar GUI, klikoni mbi jPanel dhe vendosni identifikuesin e tij në fushë Emri i fushes, Unë pyeta panel.

Më pas tërhiqni dhe lëshojeni mbi formularin në anën e djathtë JTextField, JPasswordField dhe jButton:

Mbetet për të shtuar kodin dhe për të lidhur formularin tonë me të. Kur shtuam formularin dritare kryesore, klasa u krijua automatikisht dritare kryesore, kjo klasë është klasa e formës së gjeneruar, d.m.th. kjo klasë do të shërbejë të gjitha ngjarjet e formës së dhënë.

Edhe pse klasa jonë e dritares përmban elementet e nevojshme, por edhe tani nuk ka të bëjë fare me GUI-në, ndaj le ta zgjerojmë me jKorniza dhe të trashëgojë të gjithë funksionalitetin bazë dhe të nevojshëm të GUI-së .

AT ky moment kemi formën dritare kryesore dhe klasës dritare kryesore zgjeruar me jKorniza. Tani duhet të përcaktojmë të gjithë elementët e shtuar GUI si përmbajtje të klasës dritare kryesore this.getContentPane().add(panel); Pas kësaj, përmbajtja e skedarit MainWindow.java do të ndryshohet si më poshtë:

Importo javax.swing.*; Klasa publike MainWindow zgjeron JFrame ( private JTextField textField1; private JPasswordField passwordField1; private JButton button1; panel privat JPanel; MainWindow publik() ( this.getContentPane().add(panel); ) )

Nëse provoni të ekzekutoni kodin, do të shihni përsëri të njëjtin mesazh "Përshëndetje, Govzalla!". Çështja është se ne krijuam një klasë dhe formën për të, por nuk krijuam një shembull të kësaj klase.

Është koha për të ndryshuar skedarin Main.java dhe për të shtuar kodin për krijimin e GUI-së tonë atje:

Importo java.awt.*; klasa publike Main ( public static void main (String args) ( // Krijoni një shembull të klasës MainWindow MainWindow mainWindow = new MainWindow(); // Paketoni të gjithë elementët nga forma jonë mainWindow.pack(); // Ndryshimi i madhësisë së dritares mainWindow.setSize(dimensioni i ri(200, 200)); // Shfaq dritaren e krijuar mainWindow. setVisible(e vërtetë); ) )

Duke ekzekutuar kodin

Duke klikuar në Buton do të vini re se programi nuk reagon në asnjë mënyrë. Puna është se ne nuk e kemi shtuar ende dëgjuesin ( Dëgjues) për ngjarje ( Ngjarjet) të Butonit.

dëgjues i ngjarjes ( dëgjues i ngjarjes) jButton duhet të jetë një zbatim përshtatës ActionListener, kështu që shtoni kodin e mëposhtëm në trupin e klasës dritare kryesore:

Klasa private MyButtonListener zbaton ActionListener ( @Override public void actionPerformed(ActionEvent actionEvent) ( ) )

Metoda veprimi i kryer(). Në mënyrë që mbajtësi ynë të mos jetë i pakuptimtë, shtoni kodin e mëposhtëm në metodë veprimi i kryer():

@Override public void actionPerformed(ActionEvent actionEvent) ( if (textField1.getText().equals(passwordField1.getText())) ( JOptionPane.showMessageDialog(null, "Success"); ) other ( JOptionPane.showMessullure, "alog ");))

Tani programi do t'i përgjigjet saktë ngjarjeve, jo të gjitha ngjarjeve, natyrisht. Për shembull, nëse përpiqeni të çaktivizoni programin duke klikuar në kryq, dritarja do të zhduket, por programi do të vazhdojë të funksionojë, sepse. mbajtësi i ngjarjeve të dritares kryesore nuk është shtuar.

Dërgoni punën tuaj të mirë në bazën e njohurive është e thjeshtë. Përdorni formularin e mëposhtëm

Studentët, studentët e diplomuar, shkencëtarët e rinj që përdorin bazën e njohurive në studimet dhe punën e tyre do t'ju jenë shumë mirënjohës.

Postuar ne http://www.allbest.ru/

PREZANTIMI

Gjatë viteve të fundit, zhvilluesit kanë bërë shumë përpjekje për të integruar grafikën dhe animacionin në aplikacionet e tyre dhe aplikacionet Java. Duke përdorur API-të java.awt dhe javax.swing, zhvilluesit mund të zbatojnë aplikacione grafike shumë më komplekse, duke përfshirë lojëra, mbrojtës të ekranit, mbrojtës të ekranit dhe GUI 3D.

Qëllimi i punës.Llogaritja dhe puna grafike i kushtohet ndërtimit të aplikacioneve duke përdorur ndërfaqen grafike të bibliotekave java.awt dhe javax.swing.

Rëndësia.Deri më sot, grafika nuk ka një rëndësi të vogël për gjuhët e programimit. Kjo ju lejon të vizualizoni çdo program, i cili jep shkëlqim dhe komoditet për përdorimin e programeve të caktuara. Ju lejon të krijoni faqe interneti të ndritshme dhe interesante, është i përshtatshëm kur zhvilloni baza të dhënash, shkruani lojëra celulare dhe kompjuterike.

1. FORMULARI I PROBLEMIT

Ndërfaqja grafike e përdoruesit (GUI) është mënyra kryesore se si përdoruesit e fundit ndërveprojnë me një aplikacion java. Për zhvillimin e aplikuar software në gjuhën Java, ose më mirë në ndërfaqen grafike të aplikacioneve, zakonisht përdoren paketat AWT dhe Swing.

AWT (paketa java.awt ngarkohet për akses) përmban një grup klasash që ju lejojnë të kryeni operacione grafike dhe të krijoni kontrolle të dritareve, të ngjashme me mënyrën se si bëhet në VBA dhe Delphi;

Swing (paketa javax.swing është ngarkuar për akses) përmban klasa të reja, kryesisht të ngjashme me AWT. J u shtohet emrave të klasave (JButton, JLabel, etj.).

Për momentin, klasat kryesore për ndërtimin e ndërfaqeve vizuale përmbahen në paketën Swing. Nga paketa AWT, klasat përdoren për të përpunuar mesazhet. Protozoar aplikacioni grafik më poshtë.

import javax. lëkundje.*;

klasa përfundimtare publike HelloWorld zbaton Runnable(

boshllëk publik statik kryesor (args me vargje) (

//Swing ka fillin e vet të dërgimit,

//i cili shkon paralelisht me kryesorin (në të cilin ekzekutohet main())

//rrjedhë. Nëse filli kryesor përfundon funksionimin (metoda kryesore përfundon),

//Fija përgjegjëse për funksionimin e ndërfaqes Swing mund të vazhdojë punën e saj.

//Dhe edhe nëse përdoruesi i ka mbyllur të gjitha dritaret, programi do të vazhdojë punën e tij

//(përderisa kjo fije është e gjallë). Që nga Java 6 kur të gjithë

//komponentët janë shkatërruar, rrjedha e kontrollit ndalon automatikisht.

// Ekzekutoni të gjithë kodin që ekzekutohet në fillin e kontrollit, madje edhe inicializimin:

SwingUtilities.invokeLater(new HelloWorld());

ekzekutim publik i zbrazët () (

// Krijo një dritare me titullin "Hello, World!"

Frame f = new JFrame ("Hello, World!");

// Praktika e mëparshme ishte krijimi i një dëgjuesi dhe regjistrimi

// në shembullin e dritares kryesore që iu përgjigj windowClosing()

// ndalim i detyruar Makine virtuale duke thirrur System.exit()

// Tani ekziston një mënyrë më "korrekte" për të vendosur reagimin ndaj mbylljes së dritares.

// Kjo metodë shkatërron dritaren aktuale, por nuk e ndalon aplikacionin. Tem

// vetë aplikacioni do të funksionojë derisa të mbyllen të gjitha dritaret.

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

// megjithatë, mund ta vendosni edhe si kjo:

// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Shtoni një komponent të pa-redaktueshëm me tekst në panelin e dritares.

// f.getContentPane().add (new JLabel("Hello, World!")); - stil i vjetër

f.add(new JLabel("Hello World"));

// pack() "paket" dritaren në madhësinë optimale

// të gjithë komponentët e vendosur në të.

// Trego dritaren

f.setVisible(true);

Swing ofron mekanizma për të kontrolluar aspektet e mëposhtme të një prezantimi:

Tastierë (Lëkundje ofron një mënyrë për të përgjuar hyrjen e përdoruesit)

Ngjyrat (Swing ofron një mënyrë për të ndryshuar ngjyrat që shihni në ekran)

Fusha e tekstit për futje (Swing ofron komponentë teksti për të trajtuar të gjitha detyrat e përditshme).

Komponenti J

Klasa bazë e të gjithë bibliotekës së komponentëve vizualë Swing është JComponent. Është një superklasë e komponentëve të tjerë vizualë. Është një klasë abstrakte, kështu që nuk mund të krijoni një JComponent, por përmban qindra funksione që çdo komponent Swing mund t'i përdorë si rezultat i hierarkisë së klasës. Klasa JComponent ofron infrastrukturën e ngjyrosjes për të gjithë komponentët, ajo di se si të trajtojë të gjitha shtypjet e tasteve në tastierë, prandaj nënklasat e saj duhet të dëgjojnë vetëm për çelësa specifikë. Klasa JComponent përmban gjithashtu një metodë add() që ju lejon të shtoni objekte të tjera të klasës JComponent, kështu që ju mund të shtoni çdo komponent Swing në ndonjë tjetër për të krijuar komponentë të ndërthurur (për shembull, një JPanel që përmban një JButton, ose edhe më të zbukuruar kombinime, të tilla si një JMenu që përmban një JButton ).

JLabel

Komponenti më i thjeshtë dhe në të njëjtën kohë kryesor vizual në bibliotekën Swing është JLabel, ose "etiketa". Metodat e kësaj klase përfshijnë vendosjen e tekstit, imazhit, shtrirjes dhe komponentëve të tjerë që përshkruan etiketa:

get/setText() - merr/vendos tekstin në etiketë;

get/setIcon() - merr/vendos ikonën në etiketë;

get/setHorizontalAlignment - merr/vendos pozicionin horizontal të tekstit;

get/setDisplayedMnemonic() - merrni/vendosni mnemonic (karakterin e nënvizuar) për etiketën;

get/setLabelFor() - merr/vendos komponentin të cilit i është bashkangjitur kjo etiketë; kur përdoruesi shtyp kombinimin e tastit Alt + mnemonic, fokusi zhvendoset në komponentin e specifikuar.

jButton

Komponenti kryesor aktiv në Swing është Jbutton.

Metodat e përdorura për të ndryshuar vetitë e një JButton janë të ngjashme me ato të një JLabel (do të zbuloni se ato janë të njëjta për shumicën e komponentëve Swing). Ata kontrollojnë tekstin, imazhet dhe orientimin:

get/setText() - merr/vendos tekstin në butonin;

get/setIcon() - merr/vendos imazhin në butonin;

get/setHorizontalAlignment() - merr/vendos pozicionin horizontal të tekstit;

get/setVerticalAlignment() - merr/vendos pozicionin vertikal të tekstit;

get/setDisplayedMnenomic() - merrni/vendosni mnemonic (karakter të nënvizuar) që, në kombinim me butonin Alt, bën që butoni të klikohet.

jKorniza

Klasa JFrame është një kontejner që ju lejon të shtoni komponentë të tjerë në vetvete për t'i organizuar dhe paraqitur ato te përdoruesi.

JFrame vepron si një urë lidhëse midis pjesëve Swing të pavarura nga sistemi operativ dhe sistemit aktual operativ në të cilin funksionojnë. Një JFrame regjistrohet si një dritare dhe kështu merr shumë nga vetitë e dritares së sistemit operativ: minimizimin/maksimizimin, ndryshimin e madhësisë dhe lëvizjen. Edhe pse zbatimi punë laboratorike Mjafton të mendojmë për JFrame si paleta në të cilën vendosni komponentët. Këtu janë disa nga metodat që mund të telefononi në një JFrame për të ndryshuar vetitë e tij:

get/setTitle() - merr/vendos titullin e kornizës;

get/setState() - merr/vendos gjendjen e kornizës (minimizo, maksimizoj, etj.);

is/setVisible() - merr/cakto dukshmërinë e kornizës, me fjalë të tjera, shfaqjen në ekran;

get/setLocation() - merr/vendos vendndodhjen në dritaren ku duhet të shfaqet korniza;

get/setSize() - merr/cakto madhësinë e kornizës;

add() - shtoni komponentë në kornizë.

Skema, modele dhe ngjarje

Kur ndërtoni aplikacione vizuale në Java, nuk mund t'i vendosni ato në mënyrë të rastësishme në ekran dhe të prisni që ato të funksionojnë menjëherë. Komponentët duhet të vendosen në vende specifike, t'i përgjigjen ndërveprimeve me ta, t'i përditësojnë ato bazuar në atë ndërveprim dhe t'i mbushin me të dhëna. Për të punuar në mënyrë efektive me komponentët vizualë, duhet të instalohen tre komponentët e mëposhtëm arkitekturorë Swing.

Skemat (paraqitja). Swing përmban shumë skema, të cilat janë klasa që kontrollojnë se ku vendosen komponentët në një aplikacion dhe çfarë duhet të ndodhë me ta kur dritarja e aplikacionit ndryshohet ose kur komponentët hiqen ose shtohen.

Ngjarjet Programi duhet t'i përgjigjet goditjeve të tasteve, klikimeve të mausit dhe çdo gjëje tjetër që përdoruesi mund të bëjë.

Modele (model). Për komponentë më të avancuar (lista, tabela, pemë) dhe madje edhe disa më të thjeshtë si JComboBox, modelet janë mënyra më efikase për të punuar me të dhënat. Ata heqin shumë nga puna e përpunimit të të dhënave nga vetë komponenti (mendoni MVC) dhe sigurojnë një mbështjellës rreth klasave të zakonshme të objekteve të të dhënave (si Vector dhe ArrayList).

Vëmendje e veçantë, për shkak të nevojës për të shfaqur skena dinamike në komponentët vizualë, duhet t'i kushtohet klasës Graphics 2D.

Detyra individuale e llogaritjes dhe e punës grafike: Vizatoni në dritaren e aplikacionit një segment që rrotullohet në rrafshin e kornizës rreth një pike që lëviz përgjatë segmentit.

Komponenti Java GUI

2. ZBATIMI I NJË PROBLEM NE NJË GJUHË TË NIVELIT TË LARTËJAVA

import java.awt.*;

import java.awt.geom.*;

importoni java.awt.image.BufferedImage;

* Detyrë 4. portretizojnëdritare aplikacionet (applet) segmenti i linjës, rrotulluese

* aeroplan kornizë përreth pikë duke lëvizur segment.

klasa publike LB4 zgjeron java.applet.Applet implementon Runnable(

privat statik final i gjatë serialVersionUID= 1L;

int private w, h;

private BufferedImage bi;

Grafika private 2D e madhe;

privat boolean stop = false;

privat Thread timer = null;

private Ngjyra fonColor = Ngjyra. E BARDHË;

Segmenti privat i ngjyraveNgjyra = Ngjyra. LIGHT_GRI;

private Pika e ngjyrësNgjyra = Ngjyra. E GJELBËR;

Segmenti privat;

// fillestare vendndodhjen vizatim

Segment me gjatësi të dyfishtë private;

// drejtimin paragjykim sëpata rrotullimi

Pikë lëvizëse private e dyfishtë = -1;

ndërrimi i dyfishtë privat = 0;

Pika e shpejtësisë së dyfishtë private = 1;

// shpejtësia ndryshimet dispozitathapësirë

int private speedRepaint = 30;

// injeksion e cila duke vazhduar ndryshimet dispozitat segment

grad privat int = 15;

/** Kjo metodë do thirrur pas shkarkime applet */

boshllëk publik init()(

// Ne krijojmë objektet dhe instaloni fillestare vlerat.

Dimensioni dim = getSize();

// Ne krijojmë segment, duke pyetur gjatësia

gjatësiSegmenti = (dyfish) Math. min(w, h) / 3;

segment = segment i ri (gjatësiaSegmenti, gjatësiaSegmenti / 2, grad,

segmentColor, pointColor, fonColor);

bi = (Image Buffered) CreativeImage(w, h);

i madh = bi.createGraphics();

big.setRenderingHint(RenderingHints. KEY_ANTIALIASING,

RenderingHints. VALUE_ANTIALIAS_ON);

// Ne krijojmë rrjedhin, e cila do periodikisht telefononi metodë përditësimi.

timer = fill i ri (kjo);

) kap (Përjashtim e) (

Sistemi. jashtë.println(e);

) // fund në fillim

// Kjo metodë kryen rivizatim dritare applet

përditësimi publik i zbrazëtisë (Grafika g) (

// marrim tregues nje objekt Grafika 2D

Graphics2D g2 = (Graphics2D) g;

// Ne vizatojmë përfunduar imazh ekran

g2.drawImage(bi, 0, 0, kjo);

) kap (gabim përjashtimi) (

Sistemi. jashtë.println(gabim.getMessage());

grawSegment() (

* //Pastrimi Foto big.setBackground(Ngjyra.BLU); big.clearRect(0, 0,

// Ne vizatojmë segmenti i linjës

shift += movePoint * speedPoint;

nëse (ndërrim< -lengthSegment / 2) {

movePoint *= -1;

zhvendosja = -gjatësiaSegmenti / 2;

) ndryshe nëse (shift > gjatësiSegmenti / 2) (

movePoint *= -1;

zhvendosja = gjatësiaSegmenti / 2;

segment.setPos(shift, speedPoint);

segment.rotate();

big.drawImage(segment.getSegment(), null, 0, 0);

// Kjo metodë kryerveçuar rrjedhin(kohëmatësi).

// Ai shkaqet rivizatim dritare applet çdo më jep një sekondë.

ekzekutim publik i zbrazët () (

filli. Fillimi aktual();

filli. fle(speedRepaint);

) kap (gabim me përjashtim) (

// Kjo metodë kryer nëse përdorues majtas faqe

// me applet. Ai ndalon rrjedhin(kohëmatësi) dhe, përkatësisht,

// rivizatim dritare applet.

ndalesa publike e zbrazëtisë()(

// Kjo metodë ekzekutohet kur përdoruesi ulet në faqe

// me applet. Fillon një fije paralele (kohëmatës).

nisje publike e zbrazët () (

nëse (kohëmatësi == null) (

timer = fill i ri (kjo);

// Kjo metodë ekzekutohet kur mbyllet faqja që përmban aplikacionin.

zbrazëti publike shkatërroj() (

super.shkatërroj();

filli. Fillimi aktual();

// Prisni që filli paralel (kohëmatësi) të përfundojë.

filli. rendimenti();

) // fund shkatërroj

) // përfundon klasën publike RotatingSegment

// krijoni një segment

dyshe private statike x = 0;

dyfishi përfundimtar RAD = 10;

gjatësia e dyfishtë private;

segment privat BufferedImage;

private ColorsegmentColor;

pika private e ngjyraveNgjyra;

private Ngjyra e sfonditGroundColor;

private Rectangle2D.Double r;

private Ellipse2D.Double p;

Aksi i rrotullimit të dyfishtë privat;

private Point2D.Qendër e dyfishtë;

turn privat i dyfishtë;

// këndi me të cilin ndryshon pozicioni i segmentit

intgrad privat;

Segmenti (gjatësia e dyfishtë, dyfishi i pozicionit Rrotullues, gradimi int,

Segmenti i ngjyraveNgjyra, pika e ngjyrësNgjyra, ngjyra e sfonditNgjyra e sfondit)

hedh perjashtim(

// kontrolloni parametrat

nëse (gjatësia<= 0 || posPointRotating < 0 || length < posPointRotating)

hedh një përjashtim të ri (

"Gabim: parametër i pavlefshëm në segmentin e klasës");

ky.grad = grad;

this.segmentColor = segmentNgjyra;

this.pointColor = pointColor;

this.backGroundColor = backGroundColor;

kjo.gjatësia = gjatësia;

// krijoni vizatim

segment = i ri BufferedImage((int) gjatësia * 3, (int) gjatësia * 3,

Imazhi i Buffered. TYPE_INT_ARGB);

qendër = e re Point2D.Double(gjatësia, 3 * gjatësia / 2);

// krijoni një segment

rrotullimiAksi = qendër.x + posPointRrotulluese - RAD / 2;

p = i ri Ellipse2D.Double(Aksi i rrotullimit, qendër.y, RAD, RAD);

// vendosni ngjyrën e segmentit

g2.setNgjyra(segmentNgjyra);

// vizatoni një segment

// ngjyra e pikës së caktuar

g2.setColor(pointColor);

// vizatoni një pikë

// zhvendos pikën e rrotullimit

publik void setPos (double shiftX, double shiftY) (

// krijoni një segment

kjo.ndërrim = zhvendosjeX;

qendër.y = qendër.y + zhvendosjeY * Mat. mëkat(Matematika. te Radianët(grad * x));

r = i ri Rectangle2D.Double(center.x, center.y, gjatësia, RAD);

p = i ri Ellipse2D.Double (Aksi i rrotullimit + zhvendosje, qendër.y, RAD, RAD);

// rrotullon segmentin

rrotullimi publik i zbrazëtisë()(

AffineTransform at = AffineTransform. getRotateInstance(

Math. te Radianët(grad * (++ x)), rrotullimi Boshti + RAD / 2 + zhvendosja,

// merrni kontekstin grafik

Grafika2D g2 = segment.krijojGrafikat();

// lyej gjithçka me ngjyrën e dhënë

g2.setBackground(backGroundColor);

g2.clearRect(0, 0, (int) (3 * gjatësi), (int) (3 * gjatësi));

g2.setTransform(at);

g2.setNgjyra(segmentNgjyra);

// vizatoni një segment

// ngjyra e pikës së caktuar

g2.setColor(pointColor);

// vizatoni një pikë

// Kthen një imazh

publike BufferedImage getSegment() (

3. SHEMBULL I FUNKSIONIMIT TË PROGRAMIT

Rezultati i ekzekutimit të programit:

Figura 1. Rezultati i ekzekutimit të programit

Figura 2. Rezultati i ekzekutimit të programit

Figura 3. Rezultati i ekzekutimit të programit

PËRFUNDIM

Kjo përfundon diskutimin tonë të grafikës në Java. Në këtë punim, ne kemi paraqitur një përmbledhje të shkurtër të mjeteve të programimit të grafikës 2D në Java. Ne kemi paraqitur një aplikacion që demonstron përdorimin e formave gjeometrike, teksturave.

Ne kemi diskutuar disa nga veçoritë grafike të Java. Filluam me një hyrje të shkurtër në bazat e grafikës, të tilla si sistemet e koordinatave dhe kontekstet grafike. Më pas diskutuam për pajisjet Java 2D. Ne gjithashtu trajtuam shkurtimisht se si të përdorim efektet grafike.

Gjysma e dytë e prezantimit tonë në programimin grafik në Java. Duke përdorur ndërfaqen grafike të bibliotekave java.awt dhe javax.swing, ne kemi krijuar një redaktues të thjeshtë grafik që rrotullon një objekt dydimensional rreth boshtit të tij.

BIBLIOGRAFI

1. H. M. Deitel, P.J. Deitel, S.I. Suntry - Java Programming Technologies, Libri 1 (grafika, JAVABEANS, ndërfaqja e përdoruesit)

2. Judy Bishop - Punon Java në mënyrë efikase

3. James Gosling, Bill Joy, Guy Steele, Gilad Bracha - Specifikimi i gjuhës Java, Botimi i Dytë.

4. Tim Lindholm, Frank Yellin - Specifikimi i makinës virtuale Java, Botimi i dytë.

5. Gosling J., Arnold K. - Gjuha programuese Java

6. Informacion nga www.ibm.com

7. Informacion nga faqja www.mexmat.sgu.ru

8. Informacion nga faqja www.uic.rsu.ru

Pritet në Allbest.ru

...

Dokumente të ngjashme

    Struktura e organizimit të GUI, deklarimi dhe krijimi i dëgjuesve të ngjarjeve duke përdorur klasa anonime. Paraqitja e të dhënave për tabelën është klasa AbstractTableModel. Vizualizimi i qelizave të tabelës. Dy llojet kryesore të rrymave I/O në Java.

    leksion, shtuar 05/01/2014

    Zhvillimi i një redaktuesi grafik për vizatimin e grafikave dy-dimensionale dhe tredimensionale duke përdorur gjuhën e programimit Java dhe ndërfaqet e programimit të aplikacionit Java 2D dhe Java 3D. Krijimi i një redaktuesi grafik 3D Paint. Metodat kryesore të klasës Grafikë.

    punim afatshkurtër, shtuar 19.11.2009

    Përshkrimi i paketës së aplikimit Net Beans 8.1. Zhvillimi i ndërfaqes së përdoruesit të aplikacionit. Krijimi i dritareve të kornizës bazuar në kornizat e bibliotekës java.swing. Ndryshoni ngjyrën e të dhënave të tekstit. Projektimi dhe krijimi i një modeli infologjik të një appleti.

    punë kontrolli, shtuar 11.07.2016

    Mundësitë e rrjetit të gjuhëve programuese. Përfitimet e përdorimit të aplikacioneve Java. Klasat e përfshira në bibliotekën java.awt. Krijimi i ndërfaqes së përdoruesit. Lidhja e prizës me serverin. Grafika në Java. Vlerat e përbërësve të ngjyrave.

    punim afatshkurtër, shtuar 10.11.2014

    Klasat e Java Foundation, konceptet bazë. Hierarkia origjinale e klasës Abstract Window Toolkit. Përfaqësuesit e ndërfaqes së përdoruesit. Trajtimi i ngjarjeve në JavaBeans. Kontrollet, fushë JText me shumë rreshta. Listimi i programit TextEditor.

    punim afatshkurtër, shtuar 26.06.2013

    Ekzekutimi i një programi Java. Një grup programesh dhe klasash JDK. Programimi i orientuar nga objekti në Java. Parimet e ndërtimit të një ndërfaqe grafike. Komponenti dhe kontejneri i sistemit grafik. Apletet janë programe që funksionojnë në një mjedis të shfletuesit.

    punim afatshkurtër, shtuar 02/08/2011

    Diagrami i aplikimit të tastierës së tabelimit të funksioneve. Dallimi midis një aplikacioni konsol dhe një aplikacioni dhe një GUI. Diagrami i klasës për JFrame dhe JPanel. Krijimi i një kornize të thjeshtë në Java. Paraqitja e elementeve të ndërfaqes brenda një kornize. Lak ngjarjesh.

    leksion, shtuar 05/01/2014

    Koncepti dhe karakteristikat e përgjithshme të gjuhës programuese PHP, parimet dhe fazat e punës së saj, sintaksa dhe grupet e lidhura. Trajtimi i përjashtimeve në Java. Puna me bazat e të dhënave duke përdorur JDBC. Mësoni se si të zhvilloni një ndërfaqe grafike.

    prezantim, shtuar 13.06.2014

    Zhvillimi i një skeme logjike për një bazë të dhënash të një ndërmarrje automobilistike. Modelimi i sistemit infologjik. Krijimi i një ndërfaqeje grafike të përdoruesit për bazën e të dhënave duke përdorur gjuhën e programimit Java. Testimi i softuerit.

    punim afatshkurtër, shtuar 16.12.2013

    Krijimi i aplikacioneve të konsolës duke përdorur ndërfaqen grafike të përdoruesit. Përmbajtja e paletës së komponentëve të programit C++ Builder. Përdorimi i mundësive të programimit të orientuar nga objekti, veçoritë e redaktuesit të kodit dhe format në C ++.



Po ngarkohet...
Top