Hoofdstuk 3, opdracht 4
Opdracht
Bij deze opdracht was het de bedoeling drie tekstvelden te plaatsen waar respectievelijk het aantal appels, pruimen en peren kan worden ingevuld. Het was de bedoeling dat als je op de knop klikt, er drie staafdiagrammen werden getekend. In plaats daarvan hebben we er een taart diagram van gemaakt.
Applet
Code
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Appletje extends Applet implements ActionListener {
// Defineer textfields, button
TextField txtAppels, txtPruimen, txtPeren;
Button btnDiagram;
// Defineer globale variabelen
boolean berekend;
int appels;
int pruimen;
int peren;
public void init() {
// Maak een instantie van de tekstvelden
txtAppels = new TextField(5);
txtPruimen = new TextField(5);
txtPeren = new TextField(5);
// Maak een instantie van de button
btnDiagram = new Button("Diagram");
btnDiagram.addActionListener(this);
// Voeg tekstvakken en knop toe aan GUI
add(txtAppels);
add(txtPruimen);
add(txtPeren);
add(btnDiagram);
}
public void paint(Graphics g) {
if ( berekend ) {
// Bereken het totaal
int totaal = this.appels + this.pruimen + this.peren;
// Bereken de percentages
int percentAppels = ( this.appels * 360 / totaal );
int percentPruimen = ( this.pruimen * 360 / totaal );
int percentPeren = ( this.peren * 360 / totaal );
// Teken taartpunten
g.setColor(Color.red);
g.fillArc(60, 50, 200, 200, 0, percentAppels );
g.setColor(Color.yellow);
g.fillArc(60, 50, 200, 200, percentAppels, percentPruimen );
g.setColor(Color.green);
g.fillArc(60, 50, 200, 200, ( percentAppels + percentPruimen ), percentPeren );
}
}
public void actionPerformed( ActionEvent e ) {
// Als er op btnDiagram gedrukt is:
if (e.getSource() == btnDiagram) {
// Zet waarden in variabele en bereken totoaal
this.appels = Integer.parseInt(txtAppels.getText());
this.pruimen = Integer.parseInt(txtPruimen.getText());
this.peren = Integer.parseInt(txtPeren.getText());
// Geef aan dat we iets ontvangen hebben
this.berekend = true;
// Teken de output opnieuw
repaint();
}
}
} Screenshot
