Informaticasite van het Lauwers College te Buitenpost                 © R.J. van der Beek
 
  Antwoorden opgaven hoofdstuk 18      


1a.
import java.awt.*;
import java.applet.*;

public class Opgave1a extends Applet
{   
    public void paint(Graphics g)   
    {   
    	int breedte, hoogte, balk, x1, x2, x3, y1, y2;        
        breedte = 200; x1 = 10; x2 = 50; x3 = 90;
        hoogte  = 100; y1 = 40; y2 = 70;
        balk    = 10;        
        
        g.setColor(Color.white);
        g.fillRect(0, 0, breedte, hoogte);        
		g.setColor(Color.black);
        g.fillRect(x1, 0, balk, hoogte);
        g.fillRect(x2, 0, balk, hoogte);
        g.fillRect(x3, 0, balk, hoogte);
        g.fillRect(0, y1, breedte, balk);
        g.fillRect(0, y2, breedte, balk);
        g.setColor(Color.blue);
        g.fillRect(0, y1+balk, x1, y2-(y1+balk) );
        g.setColor(Color.red);
        g.fillRect(x3+balk, 0, 
        breedte-(x3+balk), y1);
    }
}


1b.
import java.awt.*; 
import java.applet.*; 

public class Opgave1b extends Applet  
{ 
     Color kleur; 

     public void init()  
     { 
         kleur = new Color(60,60,122); 
      	 setBackground(kleur); 
     } 

     public void paint(Graphics g)  
     { 
        Dimension d; 
        d = this.getSize(); 
        int breedte = d.width; int hoogte = d.height; 
        int b = breedte/5; 
        int h = hoogte/3; 
        g.setColor (Color.red);
        g.drawRect(b, h, b, h);
        g.drawRect(3*b, h, b, h);
     } 
}


1c.
import java.awt.*; 
import java.applet.*; 

public class Opgave1c extends Applet  
{ 
     Color kleur;
     int aantal; 

     public void init()  
     { 
         kleur = new Color(60,60,122); 
      	 setBackground(kleur);
      	 aantal=0;
     } 

     public void paint(Graphics g)  
     { 
         Font lett = new Font("Arial",Font.BOLD,40);
         g.setFont(lett);
         g.drawString("Rienk",60,100);
         aantal++;
         g.drawString(String.valueOf(aantal),100,200);
     } 
}


2a.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave2a extends Applet implements ActionListener 
{ 

     Button btnKliklinks; 
     Button btnKlikrechts;
     int aantallinks, aantalrechts; 

     public void init()  
     { 
          this.setLayout(new FlowLayout()); 
          btnKliklinks = new Button("Klik op mij!"); 
          btnKlikrechts = new Button("Klik liever op mij!"); 
          this.add(btnKliklinks); 
          this.add(btnKlikrechts); 

          btnKliklinks.addActionListener(this); 
          btnKlikrechts.addActionListener(this);
          
          aantallinks=0;
          aantalrechts=0; 
     } 

     public void paint(Graphics g) 
     { 
       String s = "";
       String l = String.valueOf(aantallinks);
       String r = String.valueOf(aantalrechts);
       s="Er is "+l+" keer op de linker knop geklikt en "+r+" keer op de rechter";
       g.drawString(s,30,50); 
     } 

     public void actionPerformed(ActionEvent evt)  
     { 
          if (evt.getSource() == btnKliklinks)
          {
          	aantallinks++;
          	repaint(); 
          }

          else if (evt.getSource() == btnKlikrechts)  
          { 
               aantalrechts++; 
               repaint(); 
          } 
     }  
}


2b.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave2b extends Applet implements ActionListener 
{ 
     Button btnSpring; 
     int plaats;
     int richting; 

     public void init()  
     { 
          this.setLayout(new FlowLayout()); 
          btnSpring = new Button("Spring een stukje"); 
          this.add(btnSpring); 
          btnSpring.addActionListener(this); 
          plaats = 10;
          richting = 1;
     } 

     public void paint(Graphics g) 
     { 
          Dimension d; 
	      d = this.getSize();
	      int breedte = d.width;
	      plaats = plaats + 10*richting;
	      if (plaats>breedte-40) {richting = -1;}
	      if (plaats<0) {richting = 1;}
	      g.fillOval (plaats, 100, 40, 40);
     } 

     public void actionPerformed(ActionEvent evt)  
     { 
          if (evt.getSource() == btnSpring)
          {
          	repaint(); 
          }
     }  
}


2c.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave2c extends Applet implements ActionListener 
{ 
     Button btnTeken; 
     TextField txtLengte;
     TextField txtBreedte;

     public void init()  
     { 
          this.setLayout(new FlowLayout()); 
          btnTeken = new Button("Teken de rechthoek"); 
          txtLengte = new TextField("lengte",5);
          txtBreedte = new TextField("breedte",5);  
          this.add(txtLengte); 
          this.add(txtBreedte);
          this.add(btnTeken);  

          btnTeken.addActionListener(this); 
          txtLengte.addActionListener(this); 
          txtBreedte.addActionListener(this);
     } 

     public void paint(Graphics g) 
     { 
          String ls = txtLengte.getText();
          String bs = txtBreedte.getText();
          int l = 0;
          int b = 0;
          try
          { 
             l=Integer.parseInt(ls);
             b=Integer.parseInt(bs);
             if (l>0 && b>0)
             g.drawRect(50,50,l,b); 
          }
          catch (Exception e) { }
     } 

     public void actionPerformed(ActionEvent evt)  
     { 
          if (evt.getSource() == btnTeken)
          {
          	repaint(); 
          }
     }  
}


3a.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave3a extends Applet implements ActionListener 
{ 
   Label lblGetal1;
   Label lblGetal2;
   Button btnKleinste;
   TextField txtGetal1;
   TextField txtGetal2;
   TextField txtKleinste;

public void init()
   {
      setLayout(null);
      setSize(300,150);
      lblGetal1 = new Label("Getal 1",Label.CENTER);
      lblGetal1.setBounds(20,20,100,20);
      lblGetal1.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblGetal1.setForeground(new Color(255,255,255));
      lblGetal1.setBackground(new Color(255,0,0));
      add(lblGetal1);
      lblGetal2 = new Label("Getal 2",Label.CENTER);
      lblGetal2.setBounds(20,50,100,20);
      lblGetal2.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblGetal2.setForeground(new Color(255,255,255));
      lblGetal2.setBackground(new Color(255,0,0));
      add(lblGetal2);
      btnKleinste = new Button("Kleinste");
      btnKleinste.setBounds(20,80,100,25);
      btnKleinste.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      btnKleinste.setForeground(new Color(255,255,255));
      btnKleinste.setBackground(new Color(100,100,100));
      add(btnKleinste);
      txtGetal1 = new TextField();
      txtGetal1.setBounds(150,20,120,25);
      txtGetal1.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtGetal1);
      txtGetal2 = new TextField();
      txtGetal2.setBounds(150,50,120,25);
      txtGetal2.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtGetal2);
      txtKleinste = new TextField();
      txtKleinste.setBounds(150,80,120,25);
      txtKleinste.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtKleinste);
      btnKleinste.addActionListener(this);
   }
   
   public void actionPerformed(ActionEvent e)  
   { 
        if (e.getSource() == btnKleinste)
        {
          try
          { 
             int g1=Integer.parseInt(txtGetal1.getText());    
             int g2=Integer.parseInt(txtGetal2.getText());
             if (g1<g2) {txtKleinste.setText(String.valueOf(g1));}
             else {txtKleinste.setText(String.valueOf(g2));}
          }
          
          catch (Exception e1)
          { 
              txtKleinste.setText("vul getallen in!");
          }
        } 
   }

}


3b.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave3b extends Applet implements ActionListener 
{ 
   Label lblStraal;
   Label lblOppervlakte;
   Label lblOmtrek;
   TextField txtStraal;
   TextField txtOppervlakte;
   TextField txtOmtrek;

public void init()
   {
      setLayout(null);
      setSize(300,150);
      lblStraal = new Label("Straal",Label.CENTER);
      lblStraal.setBounds(20,20,100,20);
      lblStraal.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblStraal.setForeground(new Color(255,255,255));
      lblStraal.setBackground(new Color(255,0,0));
      add(lblStraal);
      lblOppervlakte = new Label("Oppervlakte",Label.CENTER);
      lblOppervlakte.setBounds(20,50,100,20);
      lblOppervlakte.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblOppervlakte.setForeground(new Color(255,255,255));
      lblOppervlakte.setBackground(new Color(255,0,0));
      add(lblOppervlakte);
      lblOmtrek = new Label("Omtrek",Label.CENTER);
      lblOmtrek.setBounds(20,80,100,25);
      lblOmtrek.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblOmtrek.setForeground(new Color(255,255,255));
      lblOmtrek.setBackground(new Color(255,0,0));
      add(lblOmtrek);
      txtStraal = new TextField();
      txtStraal.setBounds(150,20,120,25);
      txtStraal.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtStraal);
      txtOppervlakte = new TextField();
      txtOppervlakte.setBounds(150,50,120,25);
      txtOppervlakte.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtOppervlakte);
      txtOmtrek = new TextField();
      txtOmtrek.setBounds(150,80,120,25);
      txtOmtrek.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtOmtrek);
      txtStraal.addActionListener(this);
   }
   
   public void actionPerformed(ActionEvent e)  
   { 
        if (e.getSource() == txtStraal)
        {
          try
          { 
             double r=Double.parseDouble(txtStraal.getText());
             if (r<=0)
             {
             	txtOppervlakte.setText("pos. straal!");
             }
             else
             {
	             double opp = (double)Math.round(3.14*r*r*100)/100;    
	             txtOppervlakte.setText(String.valueOf(opp));
	             double omtrek = (double)Math.round(3.14*r*2*100)/100;    
	             txtOmtrek.setText(String.valueOf(omtrek));
	         }
          }
          
          catch (Exception e1)
          { 
              txtOmtrek.setText("vul de straal in!");
          }
        } 
   }
}


4a.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave4a extends Applet implements ActionListener 
{ 
   Label lblVulin;
   TextField txtGetal1;
   TextField txtMaal;
   TextField txtGetal2;
   TextField txtIsgelijk;
   TextField txtAntwoord;
   Label lblGoedzo;

   public void init()
   {
      setLayout(null);
      setSize(350,150);
      lblVulin = new Label("Vul in, druk dan op enter",Label.CENTER);
      lblVulin.setBounds(20,20,200,30);
      lblVulin.setFont(new Font("Dialog", Font.BOLD, 16));
      lblVulin.setBackground(new Color(255,255,0));
      add(lblVulin);
      txtGetal1 = new TextField();
      txtGetal1.setText("");
      txtGetal1.setBounds(20,70,42,30);
      txtGetal1.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtGetal1);
      txtMaal = new TextField();
      txtMaal.setText("  x");
      txtMaal.setBounds(60,70,32,30);
      txtMaal.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtMaal);
      txtGetal2 = new TextField();
      txtGetal2.setText("");
      txtGetal2.setBounds(90,70,42,30);
      txtGetal2.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtGetal2);
      txtIsgelijk = new TextField();
      txtIsgelijk.setText("  =");
      txtIsgelijk.setBounds(130,70,32,30);
      txtIsgelijk.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtIsgelijk);
      txtAntwoord = new TextField();
      txtAntwoord.setBounds(160,70,60,30);
      txtAntwoord.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtAntwoord);
      lblGoedzo = new Label("Goed zo !",Label.CENTER);
      lblGoedzo.setVisible(false);
      lblGoedzo.setBounds(20,120,200,30);
      lblGoedzo.setFont(new Font("Dialog", Font.BOLD, 16));
      lblGoedzo.setBackground(new Color(255,0,0));
      add(lblGoedzo);
      txtAntwoord.addActionListener(this);
      
      int g1=(int)Math.ceil(5.0*Math.random())+5;
      txtGetal1.setText(String.valueOf(g1));
      int g2=(int)Math.ceil(5.0*Math.random())+5;
      txtGetal2.setText(String.valueOf(g2));
      lblGoedzo.setVisible(false);
      txtAntwoord.requestFocus();
   }

   public void actionPerformed(ActionEvent e)
      {
          if (e.getSource() == txtAntwoord)
          {
          int g1=Integer.parseInt(txtGetal1.getText());
          int g2=Integer.parseInt(txtGetal2.getText());
          int a=Integer.parseInt(txtAntwoord.getText());
          String tekst="";
          if (a==g1*g2)  {tekst=" Goed zo!";}
           else
           {tekst=" Fout, het juiste is "+ String.valueOf(g1*g2);}
          lblGoedzo.setVisible(true);
          lblGoedzo.setText(tekst);
          }
      }
}


4b.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave4b extends Applet implements ActionListener 
{ 
   Label lblVulin;
   TextField txtGetal1;
   TextField txtPlus;
   TextField txtGetal2;
   TextField txtIsgelijk;
   TextField txtAntwoord;
   Label lblGoedzo;
   Button btnGeefsom;

   public void init()
   {
      setLayout(null);
      setSize(350,150);
      btnGeefsom = new Button("Geef een som");
      btnGeefsom.setVisible(true);
      btnGeefsom.setBounds(50,100,170,30);
      btnGeefsom.setFont(new Font("Dialog", Font.BOLD, 16));
      btnGeefsom.setBackground(new Color(150,150,150));
      add(btnGeefsom);
      lblVulin = new Label("Vul in, druk dan op enter",Label.CENTER);
      lblVulin.setBounds(20,20,200,30);
      lblVulin.setFont(new Font("Dialog", Font.BOLD, 16));
      lblVulin.setBackground(new Color(255,255,0));
      lblVulin.setVisible(false);
      add(lblVulin);
      txtGetal1 = new TextField();
      txtGetal1.setText("");
      txtGetal1.setBounds(20,70,42,30);
      txtGetal1.setFont(new Font("Dialog", Font.BOLD, 16));
      txtGetal1.setVisible(false);
      add(txtGetal1);
      txtPlus = new TextField();
      txtPlus.setText("  +");
      txtPlus.setBounds(60,70,32,30);
      txtPlus.setFont(new Font("Dialog", Font.BOLD, 16));
      txtPlus.setVisible(false);
      add(txtPlus);
      txtGetal2 = new TextField();
      txtGetal2.setText("");
      txtGetal2.setBounds(90,70,42,30);
      txtGetal2.setFont(new Font("Dialog", Font.BOLD, 16));
      txtGetal2.setVisible(false);
      add(txtGetal2);
      txtIsgelijk = new TextField();
      txtIsgelijk.setText("  =");
      txtIsgelijk.setBounds(130,70,32,30);
      txtIsgelijk.setFont(new Font("Dialog", Font.BOLD, 16));
      txtIsgelijk.setVisible(false);
      add(txtIsgelijk);
      txtAntwoord = new TextField();
      txtAntwoord.setBounds(160,70,60,30);
      txtAntwoord.setFont(new Font("Dialog", Font.BOLD, 16));
      txtAntwoord.setVisible(false);
      add(txtAntwoord);
      lblGoedzo = new Label("Goed zo !",Label.CENTER);
      lblGoedzo.setVisible(false);
      lblGoedzo.setBounds(20,120,200,30);
      lblGoedzo.setFont(new Font("Dialog", Font.BOLD, 16));
      lblGoedzo.setBackground(new Color(255,0,0));
      add(lblGoedzo);
      txtAntwoord.addActionListener(this);
      btnGeefsom.addActionListener(this);

      
      int g1=(int)Math.ceil(5.0*Math.random())+5;
      txtGetal1.setText(String.valueOf(g1));
      int g2=(int)Math.ceil(5.0*Math.random())+5;
      txtGetal2.setText(String.valueOf(g2));
      lblGoedzo.setVisible(false);
      txtAntwoord.requestFocus();
   }

   public void actionPerformed(ActionEvent e)
   {
       if (e.getSource() == txtAntwoord)
         txtAntwoord_Action();
       else if (e.getSource() == btnGeefsom)
         btnGeefsom_Action();
   }

   public void btnGeefsom_Action()
   {
       int g1=(int)Math.ceil(10.0*Math.random())+20;
       txtGetal1.setText(String.valueOf(g1));
       int g2=(int)Math.ceil(10.0*Math.random())+20;
       txtGetal2.setText(String.valueOf(g2));
       btnGeefsom.setVisible(false);
       lblVulin.setVisible(true);
       txtGetal1.setVisible(true);
       txtPlus.setVisible(true);
       txtGetal2.setVisible(true);
       txtIsgelijk.setVisible(true);
       txtAntwoord.setVisible(true);
       lblGoedzo.setVisible(false);
       txtAntwoord.setText("");
       txtAntwoord.setEnabled(true);
       txtAntwoord.requestFocus();
   }

   public void txtAntwoord_Action()
   {
       int g1=Integer.parseInt(txtGetal1.getText());
       int g2=Integer.parseInt(txtGetal2.getText());
       int a=Integer.parseInt(txtAntwoord.getText());
       lblGoedzo.setVisible(true);
       if (a==g1+g2)  
       {
       	    lblGoedzo.setText(" Goed zo!");
       	    lblVulin.setVisible(false);
            txtGetal1.setVisible(false);
            txtPlus.setVisible(false);
            txtGetal2.setVisible(false);
            txtIsgelijk.setVisible(false);
            txtAntwoord.setVisible(false);
       	}
        else
        {
        	lblGoedzo.setVisible(true);
            lblGoedzo.setText(" Fout, nog eens");
        	txtAntwoord.setText("");
            txtAntwoord.setEnabled(true);
            txtAntwoord.requestFocus();
        }
   }
}


4c.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave4c extends Applet implements ActionListener 
{ 
   Label lblWoord;
   Label lblVertaling;
   TextField txtWoord;
   TextField txtVertaling;
   Label lblGoedzo;

   public void init()
   {
      setLayout(null);
      setSize(400,200);
      lblWoord = new Label("Vertaal in het engels",Label.CENTER);
      lblWoord.setBounds(10,20,160,30);
      lblWoord.setFont(new Font("Dialog", Font.BOLD, 16));
      lblWoord.setBackground(new Color(255,255,0));
      add(lblWoord);
      lblVertaling = new Label("Vertaling",Label.CENTER);
      lblVertaling.setBounds(10,60,160,30);
      lblVertaling.setFont(new Font("Dialog", Font.BOLD, 16));
      lblVertaling.setBackground(new Color(255,255,0));
      add(lblVertaling);
      txtWoord = new TextField();
      txtWoord.setText("");
      txtWoord.setBounds(200,20,150,30);
      txtWoord.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtWoord);
      txtVertaling = new TextField();
      txtVertaling.setBounds(200,60,150,30);
      txtVertaling.setFont(new Font("Dialog", Font.BOLD, 16));
      add(txtVertaling);
      lblGoedzo = new Label("Goed zo !",Label.CENTER);
      lblGoedzo.setVisible(false);
      lblGoedzo.setBounds(20,120,200,30);
      lblGoedzo.setFont(new Font("Dialog", Font.BOLD, 16));
      lblGoedzo.setBackground(new Color(255,0,0));
      add(lblGoedzo);
      txtVertaling.addActionListener(this);
      txtWoord.setText("tafel");
      lblGoedzo.setVisible(false);
      txtVertaling.requestFocus();
   }

   public void actionPerformed(ActionEvent e)
      {
          if (e.getSource() == txtVertaling)
          {
             String w=txtVertaling.getText();
             String tekst = "";
             if (w.equals("table"))  {tekst=" Goed zo!";}
             else
             {tekst=" Fout, het is table";}
             lblGoedzo.setVisible(true);
             lblGoedzo.setText(tekst);
          }
      }
}


4d. Het html-document, waarin het applet wordt aangeroepen, ziet er als volgt uit:

<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET code="Opgave4d.class" width = "500" height = "300">
<PARAM name=kleur value="geel">
<PARAM name=straal value="100">
</APPLET>
</CENTER>
</BODY>
</HTML>

Het java-programma wordt dan als volgt:
import java.awt.*; 
import java.applet.*; 

public class Test extends Applet  
{ 
   public void paint(Graphics g)  
   { 
      Dimension d; 
      d = this.getSize(); 
      int breedte = d.width; int hoogte = d.height;
      Color kleur = Color.black;
      int foutcode=0;
      
      String k="";
      k = getParameter("kleur");
      if (k==null)  {foutcode=1;} else	
      {
      	if (k.equals("rood")) {kleur = Color.red;}
      	else if (k.equals("blauw")) {kleur = Color.blue;}
      	else if (k.equals("geel"))  {kleur = Color.yellow;}
      	else {foutcode=1;}
      }
      
      String rs=""; 
      int r=0;
      rs = getParameter("straal");
      if (rs==null)  {foutcode=2;} else 
      {
      	try { r =Integer.parseInt(rs);}
      	catch (Exception e) { foutcode=2;}
      }

      if (foutcode>0)
      {
          if (foutcode==1) { g.drawString("geen (juiste) kleur",60,20);}
          if (foutcode==2) { g.drawString("geen (juiste) straal",60,20);}
      }
      else
      {
       	if (r<=0) { g.drawString("straal negatief of nul",60,20);}
       	else if (10+r>breedte||10+r>hoogte) {g.drawString("straal te groot",60,20);}
       	else
       	  {
             g.setColor (kleur); 
             g.fillArc(10,10,r,r,0,360); 
          }
      }
    } 
}


5a. Onder 5f is de code van het volledige applet afgedrukt.
Als je de laatste zes methoden weghaalt heb je alleen de interface


5b. Als je er voor moet zorgen dat het programma reageert op het klikken op een naam in de listbox, dan moet je geen ActionListener, maar een zogenaamde ItemListener toevoegen.
Bij vraag 5c enz. moet je wel een ActionListener toevoegen, daarom zie je in de kop van de klasse staan:
public class Opgave5f extends Applet implements ActionListener, ItemListener

Verder staat in de methode init de volgende opdracht:
lstNamen.addItemListener(this);

En verder is de volgende methode toegevoegd:
   public void itemStateChanged(ItemEvent e) 
   {
  
       int i=lstNamen.getSelectedIndex();
	   if (i != -1) 
	   {
	       String naam=lstNamen.getItem(i);
           txtNaam.setText(naam);
       }
   }


5c. Er moet een ActionListener worden toegevoegd, daarom zie je in de kop van de klasse staan:
public class Opgave5f extends Applet implements ActionListener, ItemListener

Verder staat in de methode init de volgende opdracht:
btnVoegtoe.addActionListener(this);

In de methode actionPerformed staat o.a. het volgende:
public void actionPerformed(ActionEvent e)
{ if (e.getSource() == btnVoegtoe) btnVoegtoe_Action();}

En tenslotte is de volgende methode toegevoegd:
public void btnVoegtoe_Action()
   {
       int i=lstNamen.getSelectedIndex();
	   if (i != -1) 
	   {
           String naam=txtNaam.getText();
           lstNamen.add(naam,i+1);
           txtNaam.setText("");
       }
   }


5d. Er moet een ActionListener worden toegevoegd, daarom zie je in de kop van de klasse staan:
public class Opgave5f extends Applet implements ActionListener, ItemListener

Verder staat in de methode init de volgende opdracht:
btnWijzig.addActionListener(this);

In de methode actionPerformed staat o.a. het volgende:
public void actionPerformed(ActionEvent e)
{ if (e.getSource() == btnWijzig) btnWijzig_Action();}

En tenslotte is de volgende methode toegevoegd:
   public void btnWijzig_Action()
   {
       int i=lstNamen.getSelectedIndex();
       String naam=txtNaam.getText();
       if ((i!=-1) && (!naam.equals("")))
       {
           lstNamen.remove(i);
           lstNamen.add(naam,i);
           txtNaam.setText("");
       }
   }


5e. Er moet een ActionListener worden toegevoegd, daarom zie je in de kop van de klasse staan:
public class Opgave5f extends Applet implements ActionListener, ItemListener

Verder staat in de methode init de volgende opdracht:
btnVerwijder.addActionListener(this);

In de methode actionPerformed staat o.a. het volgende:
public void actionPerformed(ActionEvent e)
{ if (e.getSource() == btnVerwijder) btnVerwijder_Action();}

En tenslotte is de volgende methode toegevoegd:
   public void btnVerwijder_Action()
   {
       int i=lstNamen.getSelectedIndex();
       if (i!=-1) lstNamen.remove(i);
   }


5f.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave5f extends Applet implements ActionListener, ItemListener 
{ 
   Label lblNaam;
   Label lblCijfer;
   TextField txtNaam;
   Button btnVoegtoe;
   Button btnVerwijder;
   Button btnWijzig;
   Button btnSorteer;
   Button btnZoek;
   List lstNamen;

   public void init()
   {
      setLayout(null);
      setSize(340,300);
      setBackground(new Color(255,255,255));
      lblNaam = new Label("naam:",Label.CENTER);
      lblNaam.setBounds(130,20,50,30);
      lblNaam.setFont(new Font("Dialog", Font.BOLD, 12));
      lblNaam.setBackground(new Color(255,255,0));
      add(lblNaam);
      
      txtNaam = new TextField();
      txtNaam.setText("");
      txtNaam.setBounds(190,20,120,30);
      txtNaam.setFont(new Font("Dialog", Font.BOLD, 12));
      add(txtNaam);
      
      btnVoegtoe = new Button("Voegtoe onder geselecteerde");
      btnVoegtoe.setBounds(130,60,180,30);
      btnVoegtoe.setFont(new Font("Dialog", Font.BOLD, 12));
      btnVoegtoe.setBackground(new Color(150,150,150));
      add(btnVoegtoe);

      btnVerwijder = new Button("Verwijder de geselecteerde");
      btnVerwijder.setBounds(130,100,180,30);
      btnVerwijder.setFont(new Font("Dialog", Font.BOLD, 12));
      btnVerwijder.setBackground(new Color(150,150,150));
      add(btnVerwijder);

      btnWijzig = new Button("Wijzig de geselecteerde");
      btnWijzig.setBounds(130,140,180,30);
      btnWijzig.setFont(new Font("Dialog", Font.BOLD, 12));
      btnWijzig.setBackground(new Color(150,150,150));
      add(btnWijzig);

      lstNamen = new List();
      lstNamen.setBounds(20,20,100,270);
      lstNamen.setFont(new Font("Dialog", Font.BOLD, 12));
      lstNamen.setBackground(new Color(255,255,255));
      add(lstNamen);

      lstNamen.addItemListener(this);
      btnVoegtoe.addActionListener(this);
      btnVerwijder.addActionListener(this);
      btnWijzig.addActionListener(this);
      txtNaam.addActionListener(this);
      
      lstNamen.add("Jeanet");
      lstNamen.add("Tim");
      lstNamen.add("Marian");
   }

      public void itemStateChanged(ItemEvent e) 
   {
  
       int i=lstNamen.getSelectedIndex();
	   if (i != -1) 
	   {
	       String naam=lstNamen.getItem(i);
           txtNaam.setText(naam);
       }
   } 
   
   public void actionPerformed(ActionEvent e)
      {
          if (e.getSource() == btnVoegtoe)
            btnVoegtoe_Action();
          else if (e.getSource() == btnVerwijder)
            btnVerwijder_Action();
          else if (e.getSource() == btnWijzig)
            btnWijzig_Action();
          else if (e.getSource() == txtNaam)
            txtNaam_Action();
      }
   
   public void btnVoegtoe_Action()
   {
       int i=lstNamen.getSelectedIndex();
	   if (i != -1) 
	   {
           String naam=txtNaam.getText();
           lstNamen.add(naam,i+1);
           txtNaam.setText("");
       }
   }

   public void btnVerwijder_Action()
   {
       int i=lstNamen.getSelectedIndex();
       if (i!=-1) lstNamen.remove(i);
   }

   public void btnWijzig_Action()
   {
       int i=lstNamen.getSelectedIndex();
       String naam=txtNaam.getText();
       if ((i!=-1) && (!naam.equals("")))
       {
           lstNamen.remove(i);
           lstNamen.add(naam,i);
           txtNaam.setText("");
       }
   }
   
   public void txtNaam_Action()
   {
       int aantal=lstNamen.getItemCount();
       String naam=txtNaam.getText();
       if (!naam.equals(""))
       {
           lstNamen.add(naam);
           txtNaam.setText("");
       }
   }

}


6a.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave6a extends Applet implements ActionListener 
{ 
     Button btnGeefmaand; 
     TextField txtNummermaand;
     TextField txtBreedte;
     String maand[] = new String[13];


     public void init()  
     { 
          this.setLayout(new FlowLayout()); 
          btnGeefmaand = new Button("Geef de maand"); 
          txtNummermaand = new TextField("",5);
          this.add(txtNummermaand); 
          this.add(btnGeefmaand);  
          btnGeefmaand.addActionListener(this);
          
          maand[1]="Januari";
          maand[2]="Februari";
          maand[3]="Maart";
          maand[4]="April";
          maand[5]="Mei";
          maand[6]="Juni";
          maand[7]="Juli";
          maand[8]="Augustus";
          maand[9]="September";
          maand[10]="October";
          maand[11]="November";
          maand[12]="December";
     } 

     public void paint(Graphics g) 
     { 
          String ms = txtNummermaand.getText();
          int m = 0;
          try
          { 
             m=Integer.parseInt(ms);
             if (m>0 && m>13)
             { g.drawString(maand[m],60,100); }
             else 
             { g.drawString("Geef het nummer van een maand (1 t/m 12)",60,100); }
          }
          catch (Exception e) 
          {
          	  g.drawString("Geef het nummer van een maand (1 t/m 12)",60,100);
          }
     } 

     public void actionPerformed(ActionEvent evt)  
     { 
          if (evt.getSource() == btnGeefmaand)
          {
          	repaint(); 
          }
     }  
}


6b.
import java.awt.*; 
import java.applet.*; 

public class Opgave6b extends Applet  
{ 
     public void init()  
     { 
          setBackground(Color.yellow); 
     } 

     public void paint(Graphics g)  
     { 

      Dimension d; 
      d = this.getSize(); 
      int breedte = d.width; 
      int hoogte = d.height; 
      int zijde = hoogte/12; 
      if (breedte<hoogte) {zijde = breedte/12;} 
      for (int rij=1;rij<=10;rij++)
      {
      	for (int kolom=1;kolom<=10;kolom++)
      	{
      		if (((rij+kolom) % 2) == 0 )
      		{
      			g.setColor (Color.black);
      		}
      		else
      		{
      			g.setColor (Color.white);
      		}
      		
            g.fillRect (kolom*zijde, rij*zijde, zijde, zijde);
        }
     }
  }
}


7a. Maak eerst de klasse Breuk, die in paragraaf 18.8.4 beschreven staat.
Dat doe je door in JCreator te klikken op Files → New → tabblad Files → Java File.
Als naam voer je in: Breuk.
En dan kun je de code voor de totale klasse, zoals die onderaan in paragraaf 18.8.4 staat, kopiëren.
Verder dan een nieuw project, noem dat bijvoorbeeld Testbreuk:
import java.awt.*;
import java.applet.*;

public class Testbreuk extends Applet {

	public void paint(Graphics g) {
		Breuk b1=new Breuk(1,3);
		Breuk b2=new Breuk(1,4);
		Breuk b3=new Breuk();
		b3=b1.telop(b2);
		int t=b3.getTeller();
		int n=b3.getNoemer();
		double u=b3.geefWaarde();
		g.drawString("teller:"+String.valueOf(t), 20, 20 );
		g.drawString("noemer:"+String.valueOf(n), 120, 20 );
		g.drawString("waarde:"+String.valueOf(u), 220, 20 );		
		
		Breuk b4=new Breuk(12,15);
		b3=b4.vereenvoudig();
		t=b3.getTeller();
		n=b3.getNoemer();
		u=b3.geefWaarde();
		g.drawString("teller:"+String.valueOf(t), 20, 60 );
		g.drawString("noemer:"+String.valueOf(n), 120, 60 );
		g.drawString("waarde:"+String.valueOf(u), 220, 60 );
	}
}
Zorg er wel voor dat je de file Breuk.java aan je project toevoegt!
Klik daarvoor op Project → Add Files en zoek dan het bestand Breuk.java uit, dat je daarvoor gemaakt had (als het goed is)
7b.
public class Rekenwerk
{
    // attributen (zijn er niet)
    
    // constructor
    public Rekenwerk()
    {
    }
    // methoden

    public long machtsVerheffing(int grondtal,int exponent)
    {
        long uitkomst = 1;
        if (exponent == 0) 
           {uitkomst = 1;}
        else
           {uitkomst = grondtal * machtsVerheffing(grondtal,exponent - 1);}
        return uitkomst;
    }

    public long faculTeit(int getal)
    {
        long uitkomst = 1;
        if (getal == 0) 
           {uitkomst = 1;}
        else
           {uitkomst = getal * faculTeit(getal - 1);}
        return uitkomst;
    }
}
7c.
import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class Opgave7c extends Applet implements ActionListener 
{ 
   Label lblGetal;
   Label lblFaculteit;
   Label lblGrondtal;
   Label lblExponent;
   Label lblMacht;
   
   TextField txtGetal;
   TextField txtFaculteit;
   TextField txtGrondtal;
   TextField txtExponent;
   TextField txtMacht;
   Rekenwerk rw;

public void init()
   {
      setLayout(null);
      setSize(300,150);
      lblGetal = new Label("Getal",Label.CENTER);
      lblGetal.setBounds(20,20,80,25);
      lblGetal.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblGetal.setForeground(new Color(255,255,255));
      lblGetal.setBackground(new Color(255,0,0));
      add(lblGetal);
      lblFaculteit = new Label("Faculteit",Label.CENTER);
      lblFaculteit.setBounds(160,20,80,25);
      lblFaculteit.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblFaculteit.setForeground(new Color(255,255,255));
      lblFaculteit.setBackground(new Color(255,0,0));
      add(lblFaculteit);
      lblGrondtal = new Label("Grondtal",Label.CENTER);
      lblGrondtal.setBounds(20,50,80,25);
      lblGrondtal.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblGrondtal.setForeground(new Color(255,255,255));
      lblGrondtal.setBackground(new Color(0,0,255));
      add(lblGrondtal);
      lblExponent = new Label("Exponent",Label.CENTER);
      lblExponent.setBounds(20,80,80,25);
      lblExponent.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblExponent.setForeground(new Color(255,255,255));
      lblExponent.setBackground(new Color(0,0,255));
      add(lblExponent);
      lblMacht = new Label("Macht",Label.CENTER);
      lblMacht.setBounds(160,80,80,25);
      lblMacht.setFont(new Font("TimesRoman", Font.PLAIN, 18));
      lblMacht.setForeground(new Color(255,255,255));
      lblMacht.setBackground(new Color(0,0,255));
      add(lblMacht);
      
      txtGetal = new TextField();
      txtGetal.setBounds(110,20,40,25);
      txtGetal.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtGetal);
      txtGetal.addActionListener(this);
      txtFaculteit = new TextField();
      txtFaculteit.setBounds(250,20,120,25);
      txtFaculteit.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtFaculteit);
      txtGrondtal = new TextField();
      txtGrondtal.setBounds(110,50,40,25);
      txtGrondtal.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtGrondtal);
      txtGrondtal.addActionListener(this);
      txtExponent = new TextField();
      txtExponent.setBounds(110,80,40,25);
      txtExponent.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtExponent);
      txtExponen.addActionListener(this);
      txtMacht = new TextField();
      txtMacht.setBounds(250,80,120,25);
      txtMacht.setFont(new Font("Dialog", Font.PLAIN, 18));
      add(txtMacht);
      rw=new Rekenwerk();
   }
   
   public void actionPerformed(ActionEvent e)  
   { 
        if (e.getSource() == txtGetal)
        {
          try
          { 
             int r=Integer.parseInt(txtGetal.getText());
             if (r<0)
             {
             	txtFaculteit.setText("niet neg!");
             }
             else
             {
	             long antw = rw.faculTeit(r);    
	             txtFaculteit.setText(String.valueOf(antw));
	         }
          }
          
          catch (Exception e1)
          { 
              txtFaculteit.setText("vul getal in!");
          }
        } 
        
        if (e.getSource() == txtExponent)
        {
          try
          { 
             int x=Integer.parseInt(txtExponent.getText());
             int g=Integer.parseInt(txtGrondtal.getText());
             long antw = rw.machtsVerheffing(g,x);    
	         txtMacht.setText(String.valueOf(antw));
          }
          
          catch (Exception e1)
          { 
              txtMacht.setText("vul goed in!");
          }
        } 
   }
}
Zorg er wel voor dat je de file Rekenwerk.java aan je project toevoegt!


8a. Machinecode is de code die een processor begrijpt en kan uitvoeren. Bytecode is de code waar Java-programma's naar vertaald worden en die betrekkelijk dicht aan zit tegen machinecode. Het is daarom voor een speciaal programma (de Java Virtual Machine of JVM) niet moeilijk om bytecode snel om te zetten in machinecode voor een specifieke processor. Voorbeeld: Pascal, VB, Java (de meeste talen)
b. Een compiler vertaalt het hele programma in één keer in machinetaal.
Een interpreter vertaalt het programma regel voor regel, en pas nadat het programmadeel dat hoort bij die regel is uitgevoerd, wordt de volgende regel vertaald in machinetaal. Voorbeeld: PHP (de meeste scripttalen)
c. Een Java-programma vertalen naar bytecode.
d. Bytecode omzetten naar machinecode voor een specifieke processor.
e. Een Integrated Development Environment of geintegreerde ontwikkelomgeving, zoals JCreator. In een IDE zijn alle losse onderdelen gebundeld tot een geheel, en meestal voorzien van extra faciliteiten, waardoor het voor de programmeur makkelijker is programma's te ontwikkelen.
f. Dat er onderscheid gemaakt wordt tussen hoofd- en kleine letters.
g. Dat programma's zijn opgebouwd uit klassen, waar objecten van gemaakt worden. Het zijn de objecten die met elkaar het werk verrichten wat het programma geacht wordt te doen.
h. De naam van een klasse begint met een hoofdletter. De namen van objecten en van methoden met een kleine letter. Als de naam van een object of methode uit twee of meer woorden bestaat begint het eerste woord met een kleine en het tweede woord met een hoofdletter, zoals in getSize.
i. java.awt, java.applet, java.io, java.net, java.util
j. Het object dat hoort bij de methode, van waaruit deze opdracht wordt aangeroepen. Dus het applet zelf.
k. de methoden init en paint
l. g.drawOval( 120, 20, 160, 160 );
Daarbij moet je je voorstellen dat je een rechthoek om de cirkel tekent, die er precies omheen past.
De linker bovenhoek is dan (120,20), de lengte is 160 en de breedte is 160
m. De methode repaint() maakt het uitvoervenster schoon en zorgt ervoor dat de methode paint opnieuw wordt uitgevoerd. De methode repaint() gebruik je als je wilt dat er iets aan de uitvoer verandert na een event, bijvoorbeeld na het klikken op een knop.


9a. Een declaratie
b. Een toekenningsopdracht
c. int p=5;
d. new
Dit hoeft niet bij elementaire typen, zoals int, double, String. Anders wel
e. String s = Integer.toString(g); of
String s = "" + g;
f. int x = Integer.parseInt(s); of
int x = String.valueOf(s);
g. De eerste berekening is een deling van twee gehele getallen, het resultaat is dan in java ook een geheel getal (hier 1)
De tweede berekening is een deling van een double en een int, het resultaat is dan van het type double (hier 1.5)
h. Typecasting is conversie van het ene naar het andere type. Je gebruikt dit bijvoorbeeld als een int in een berekening de rol van een double moet spelen. Bij de vorige vraag had je de opdracht ook zo kunnen schrijven: double r1 = (double) 3 / 2;
Dan wordt het getal 3 als een double beschouwd, en wordt de uitkomst niet automatisch een integer.
i. and = &&
or = ||
j. for (int i = 7; i < 22; i=i+2 ) g.drawString(Integer.toString(i), 5 + i*15, 20);
k. int i = 0;
while( i < 11 )
{
      g.drawLine( i*10, 50, 200, 200 );
      i++;
}


10a. Een actionListener zorgt er voor dat het programma reageert op een gebruikers-actie.
b. btnTest.addActionListener(this);
In de methode init
c. Die methode wordt uitgevoerd als er een bepaalde gebruikers-actie plaatsvindt, bijvoorbeeld als er op een knop wordt geklikt.
d. implements ActionListener
De header wordt dus: public class ........ extends Applet implements ActionListener
e. Je kunt m.b.v. die parameter er voor zorgen dat, wat er gebeurt in de methode actionPerformed( ... ), afhangt van welke actie er heeft plaats gevonden.
f. Bijvoorbeeld als volgt, als er twee buttons zijn met de namen button1 en button2:
public void actionPerformed(ActionEvent evt) {
      if (evt.getSource() == button1)
            { ........... }
      else if (evt.getSource() == button2)
            { ........... }
}


11a. s = Integer.toString(g); of s = IntToStr(g);
b. Als je een getal wilt laten afdrukken in een tekstvenstertje.
c. g = Integer.parseInt(s); of g = String.valueOf(s);
d. Als je er mee wilt rekenen.
e. De methode parseInt werkt niet als de ingevoerde string iets anders dan cijfers bevat of leeg is, er volgt dan een foutmelding (tenminste als je daar geen rekening mee gehouden hebt).
f. try
{ int g = Integer.parseInt(txtGetal.getText());
..........................; enz.
}
catch (Exception e)
{ ..........................;
}


12a. Een beschrijving van een bepaald type objecten. Een klasse heeft meestal een aantal attributen, waarmee de gegevens van het object worden vastgelegd. En een klasse heeft meestal een aantal methoden die met die gegevens werken. Een klasse heeft meestal ook een constructor, om bij het maken van een nieuw object de attributen van een waarde te voorzien.
b. Die zorgt ervoor dat er een object gemaakt wordt, en dat de attributen een bepaalde waarde krijgen.
c. Een methode levert vaak een resultaat op, dat is de retourwaarde. Return-value (terugkeerwaaarde).
d. Als de methode geen terugkeerwaarde heeft.
e. int[] rij = new int[ 10 ];
for( int i = 0; i < 10; i++ ) { rij[ i ] = i+1;}
f. rij.length