JavaK Jou gratis hulpbron vir Java Kennis! ENGLISH  
     
  Tuisblad Kontak Artikels Projekte Vrae en Antwoorde Skakels  
     
 


JFrame en sy gebruike.

JFrame vorm gewoonlik die basis van die meeste Java applikasies en is in baie gevalle die enigste hoof komponent wat gebruik word vir klein GUI programme. In hierdie artikel kyk ons na 'n paar algemene gebruike van JFrame en hoe jy maklik 'n GUI vir jou program aanmekaar kan slaan.

Kom ons begin met 'n eenvoudige programmetjie wat 'n klein venstertjie op die skerm vertoon. Die program word so geskryf dat daar 'n driver klass nodig is om dit te bedryf. Alle bronkode word in die volgende twee blokkies verskaf wat volg op die prentjie. Lees asseblief dir bronkode (source code) deur voordat jy die verduideliking lees, dit sal dit makliker maak om te verstaan.

Skep van 'n eenvoudige venster :



                      public class Venster1Drywer
                      {
                      public static void main (String args[])
                      {
                      Venster1 vensterVoorbeeld = new Venster1 ();
                      vensterVoorbeeld.setVisible (true);
                      }
                      }
                    
                      import javax.swing.*;
                      import java.awt.*;
                      import java.awt.event.*;
                      public class Venster1 extends JFrame
                      {
                      public Venster1 ()
                      {
                      setSize (300, 200);
                      setTitle ("Venster 1");
                      setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
                      }
                      }
                    


In die eerste kode blokkie is die drywer vir die Venster1 program. Dit skep 'n nuwe objek van die tipe Venster1 en roep dan die objek se setVisible metode met 'n true parameter. Soos jy kan sien is die meeste drywer programme vir GUI projekte baie eenvoudig aangesien al die regte werk gedoen word in die GUI klasse.

Die tweede kode blok bevat 'n effens meer lywig program met 'n paar dinge wat jy dalk nog nie te siene gekry het nie. Die eerste drie lyne word imports genoem. Die ouens wat Java ontwerp het, het jou 'n eindelose nagmerrie gespaar deur sekere biblioteke van kode beskikbaar te stel saam met Java. Twee biblioteke wat jy baie gereeld van gaan hoor as dit by GUI (graphical user interface) ontwerp kom is Swing en AWT. Vir nou is dit genoeg om te weet dat jy die drie lyne moet insluit wanneer jy GUI ontwikkeling doen in Java.

Dit bring ons by die extends JFrame frase. Java is 'n OOP (object orientated programming) programmeringstaal en op die manier maak jy gebruik van die feit om al die eienskappe van JFrame te erf. In die eenvoudige oefening het ons slegs 'n constructor nodig wat die volgende doen :
  • 1. Stel die verlangde grote van die venster.
  • 2. Stel die titel (naam) van die venster.
  • 3. Laat weet vir Java wat om te doen as die venster toemaak.
Vir 1 is dit redelik eenvoudig : JFrame het 'n ingeboude metode met die naam setSize wat jou toelaat om die wydte en hoogte van die skerm te spesifiseer. Net so is daar 'n metode om die titel van die venster as 'n String te spesifiseer. Die derde opdrag wat die constructor gee is om vir Java te laat weet dat dat die JFrame moet EXIT wanneer dit toegemaak (closed) word. Laat die derde lyn uit en die program sal nie vanself stop nie. Die venster sal weggesteek word, maar omdat Java nie presies weet wat jy wil doen nie, sal dit aanhou uitvoer. Soms is dit nuttig, veral wanneer jou program meer as een skerm het, maar in die geval spesifiseer ons aan Java dat die gebruiker klaar is met die program die oomblik wat hy of sy die hoof skerm toemaak.

Skep van 'n minder eenvoudige venster :


Kom ons kyk na 'n effens meer gekompliseerde venster wat darem ook iets kan doen en nie net op die skerm rond sit nie. Vir die oefening gaan ons 'n JLabel en 'n JButton komponent gebruik. Deur op die JButton te kliek kan die gebruiker 'n effek op die JLabel aan of af skakel. Die drywer is baie eenvoudig, dis so eenvoudig dis presies dieselfde as die vorige voorbeeld! Behalwe natuurlik dat dit nou van ons Venster2 objek tipe gebruik maak.

Elke keer wat die JButton gekliek word, word die toestand van die JLabel gewissel tussen AAN of AF. Die toestand word in 'n boolean veranderlike gestoor. Hierdie eenvoudige voorbeeld demonstreer die volgende :
  • Hoe om 'n JFrame te skep en om komponente daarop te plaas.
  • Hoe om BorderLayout te gebruik.
  • Hoe om 'n ActionListener te gebruik.



                      public class Venster2Drywer
                      {
                      public static void main (String args[])
                      {
                      Venster1 vensterVoorbeeld = new Venster2 ();
                      vensterVoorbeeld.setVisible (true);
                      }
                      }
                    
                      import javax.swing.*;
                      import java.awt.*;
                      import java.awt.event.*;
                      public class Venster2 extends JFrame
                      {
                      private JLabel dieLabel;
                      private JButton dieKnop;
                      private boolean toestand;
                      public Venster2 ()
                      {
                      setSize (300, 200);
                      setTitle ("Venster 2");
                      setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
                      bouSkerm ();
                      }
                      private void bouSkerm ()
                      {
                      toestand = true;
                      dieLabel = new JLabel ("AAN");
                      dieLabel.setHorizontalAlignment (JLabel.CENTER);
                      dieLabel.setForeground (Color.RED);
                      getContentPane ().add (dieLabel, BorderLayout.CENTER);
                      dieKnop = new JButton ("Probeer my");
                      dieKnop.addActionListener (new ActionListener ()
                      {
                      public void actionPerformed (ActionEvent evt)
                      {
                      wisselAksie ();
                      }
                      }
                      );
                      getContentPane ().add (dieKnop, BorderLayout.SOUTH);
                      }
                      private void wisselAksie ()
                      {
                      if (toestand == true)
                      {
                      toestand = false;
                      dieLabel.setText ("AF");
                      }
                      else
                      {
                      toestand = true;
                      dieLabel.setText ("AAN");
                      }
                      }
                      }
                    
Die program volg dieselfde basiese patroon as Venster1, met 'n paar klein veranderings, natuurlik. Die JLabel, JButton en boolean word as private class variables verklaar. Anders as veranderlikes wat in metodes verklaar word, is hulle dus sigbaar vir alle metodes in die spesifieke klas. Dis hoekom beide die bouSkerm() en WisselAksie() metodes dieLabel se teks kan verstel.

Die bouSkerm() metode skep twee nuwe objek tipes en plaas hulle op die skerm se content pane. Nou, die woord self behoort jou 'n aanduiding te gee van wat dit beteken : Die content pane is waar die inhoud van die skerm gestoor word. Deur iets op die content pane te plaas, maak jy dit sigbaar aan die gebruiker. 'n ActionListener word aan dieKnop gekoppel wat luiser vir enige action event wat mag plaasvind. Deur te kliek op 'n knoppie veroorsaak jy 'n action event wat dan op sy beur weer die wisselAksie() metode roep. En daar het jy 'n eenvoudige GUI voorbeeld wat jou 'n idee behoort te gee van hoe om met JFrame te begin werk.


Die Skrywer
Hierdie artikel oor Swing JFrames is geskryf deur Ewald Horn en word gratis gehuisves deur JavaK. Besoek gerus vir www.javak.co.za vir meer artikels deur Ewald Horn. Die skrywer se tuisblad is te vinde by www.nofuss.co.za.