Download:
JRotGelbGruen. java |
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JRotGelbGruen extends JFrame
implements ActionListener {
Color bgColor;
JButton jbRot, jbGelb, jbGruen, jbNeutral, jbStop;
Container cp;
public JRotGelbGruen(String title) {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
cp = getContentPane();
cp.setLayout(new FlowLayout());
bgColor = getBackground();
jbRot = new JButton("rot");
jbRot.addActionListener(this);
cp.add(jbRot);
jbGelb = new JButton("gelb");
jbGelb.addActionListener(this);
cp.add(jbGelb);
jbGruen = new JButton("grün");
jbGruen.addActionListener(this);
cp.add(jbGruen);
jbNeutral = new JButton("neutral");
jbNeutral.addActionListener(this);
cp.add(jbNeutral);
jbStop = new JButton("Ende");
jbStop.addActionListener(this);
cp.add(jbStop);
setSize(400, 200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == jbRot) cp.setBackground(Color.RED);
if (obj == jbGelb) cp.setBackground(Color.YELLOW);
if (obj == jbGruen) cp.setBackground(Color.GREEN);
if (obj == jbNeutral) cp.setBackground(bgColor);
if (obj == jbStop) System.exit(0);
}
public static void main(String[] args) {
JRotGelbGruen ampel =
new JRotGelbGruen("Rot - Gelb - Grün");
}
}
|
|
Neben dem
größeren des Quellekodes sich selbst erklärt, ist besonders die
Implementierung der Methode
actionPerformed(..)
interessant. Das übergebene
ActionEvent-Objekt
e
wird mit Hilfe der Methode
getSource() befragt, welches
der beim ActionListener
registrierten Objekte ein Ereignis
ausgelöst hat. Im Prinzip können verschiedenartige Objekte das Ereignis
ausgelöst haben. Deshalb wird das von getSource() gelieferte Objekt in
einem Objekt der Klasse Object
gespeichert, denn von der Klasse
Object erben alle Klassen,
weshalb wir einem Object-Objekt
jedes beliebe Objekt also auch ein
JButton-Objekt
zuweisen können. Man braucht jetzt nur noch selektieren, welches
JButton-Objekt
getSource()
geliefert hat und die entsprechende Reaktion implementieren |