Lehrer Nussbaumer - JAVA (eine kleine Einführung ;)

Grundlagen

GUI

Eingabe

Ausgabe

Applikationen

Applets

  1. CheckBoxes
  2. Events
  3. Menüs
  4. Langton-Ameise
  5. Turmiten
  6. Fraktale
  7. Zelluläre Automaten
  8. Fraktales Wachstum
  9. Logistisches Wachstum
  10. Feigenbaum Diagramm
  11. Sortieralgorithmen
  12. Lorenz-Plot

Servlets

Beispiele

Spiele

IDEs

Skriptum

JAVA-DOCS


-----------------
letzte Änderung:
09 December 2021
-----------------
Lehrer Nussbaumers Seite

... in Arbeit ...

CheckBoxes

Kontrollkästen steuern den Programmablauf. Im vorliegenden Beispiel sollen Kontrollkästen für Mehrfachauswahl und Einfachauswahl kombiniert werden.

Beispiel:

Der Funktionsgraph einer gedämpften Schwingung wird mit verschiedenen Darstellungsoptionen ausgegeben.


Code:

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

public class funktion extends Applet
    implements ActionListener, ItemListener {

    Button Grafik;
    CheckboxGroup Farbgruppe;
    Checkbox chr;
    Checkbox chg;
    Checkbox chb;
    Checkbox chG;
    Checkbox chB;
    Checkbox chF;

    public void init() {

	chG = new Checkbox("Gitter",null,false);
	chB = new Checkbox("Beschriftung",null,false);
	chF = new Checkbox("Farbe",null,false);
	Farbgruppe = new CheckboxGroup();
	chr = new Checkbox("rot",Farbgruppe,true);
	chg = new Checkbox("gruen",Farbgruppe,false);
	chb = new Checkbox("blau",Farbgruppe,false);
	Grafik = new Button("Funktionsgraph in den gewünschten Optionen zeichnen");
	setLayout(new BorderLayout());
	Panel p_r = new Panel();
	p_r.setLayout(new GridLayout(6,1));

	p_r.add(chG);
	p_r.add(chB);
	p_r.add(chF);
	p_r.add(chr);
	p_r.add(chg);
	p_r.add(chb);
	add ("East",p_r);
	add("South", Grafik);

	chG.addItemListener(this);
	chF.addItemListener(this);
	chB.addItemListener(this);
	chr.addItemListener(this);
	chb.addItemListener(this);
	chg.addItemListener(this);
	Grafik.addActionListener(this);
    }

    public void itemStateChanged (ItemEvent e) {
    }

    public void actionPerformed (ActionEvent e) {
        if (e.getSource() == Grafik) {
	    repaint();
	}
    }

    double f(double x) {
	return 200 - 2*Math.pow(2.71828,-0.01*x)*Math.sin(0.3*x)*50;
    }

    public void paint(Graphics g) {

	g.setColor(Color.white);
	g.fillRect(50,50,250,250);
	g.setColor(Color.black);

	if (chG.getState()) {
	    for (int i=1;i<7;i++) {
		g.drawLine(i*50,100,i*50,300);
	    }
	    for (int i=2;i<7;i++) {
		g.drawLine(50,i*50,300,i*50);
	    }
	}

	if (chB.getState()) {
	    g.drawString("gedämpfte Schwingung",100,80);
	}

	if (chF.getState()) {
	    if (chr.getState()) {
		g.setColor(Color.red);
	    }
	    else if (chg.getState()) {
		g.setColor(Color.green);
	    }
	    else if (chb.getState()) {
		g.setColor(Color.blue);
	    }
	}

	for (int x=0;x<250;x++) {
	    g.drawLine(x+50,(int)f(x),x+51,(int)f(x+1));
	}
    }
}

Kommentar:

  • Kombination verschiedener Layout-Manager - mit der Verwendung sogenannter "Panels" können mehrere Layout-Manager kombiniert werden. In diesem Beispiel wird ein GridLayout in "East" eines BorderLayouts eingefügt.
  • Mehrfachauswahl - Objekt CheckBox
  • eindeutige Auswahl - werden mehrere CheckBox-Objekte einem CheckBoxGroup-Objekt zugeordnet, so kann nur mehr maximal eine CheckBox ausgewählt werden.
  • ItemListener - behandelt Ereignisse, die auftreten, wenn eine CheckBox selektiert bzw. deselektiert wurde.
  • ActionListener - behandelt Ereignisse, die auftreten, wenn ein Button aktiviert wurde. In diesem Beispiel wird nur die Methode repaint() aufgerufen, die ihrerseits wieder die Methode paint() auslöst.
  • Status der CheckBoxes abfragen - ob eine CheckBox selektiert oder deselektiert wurde, kann die Methode getStatus() ermitteln. Sie liefert für eine selektierte Box den Boole'schen Wert 'true'.
  • Mathematische Funktionen - das Package 'Math' stellt wichtige mathematische Funktionen zur Verfügung. In diesem Beispiel wird die Sinus-Funktion Math.sin() und die Exponentialfunktion Math.pow() verwendet.


Aufgabe:

Erweitere obiges Applet um eine Auswahlliste, die die Auswahl verschiedener Funktionen zulässt!


© Alfred Nussbaumer, Weblog "MiniNuss"