// JavaProject LColoredButtons
ColoredButtons unter Verwendung von Lambda-Ausdrücken. Vergleicht
man den Programmcode des Projekts LColoredButtons mit dem des
Projekts ColoredButtons, so sieht man, dass Programmierzeilen, die mit der
Behandlung von Ereignissen (z.B. Mausklicks) zu tun haben, gegebenenfalls
eleganter und kürzer formuliert werden können, wenn Lambda-Ausdrücke
verwendet werden.
// LColoredButtons.java
import java.awt.*;
import javax.swing.*;
class BFrame extends JFrame { //
Vererbung
private static final long serialVersionUID = 0L;
Image icon;
JButton bred; //
Swing-Komponenten
JButton bgreen;
JButton bblue;
Color black = Color.BLACK; //
Konstanten
Color blue = Color.BLUE;
Color green = Color.GREEN;
Color red = Color.RED;
Color yellow = Color.YELLOW;
Color white = Color.WHITE;
BFrame() {
setTitle("Farbige Schaltflächen");
icon = Toolkit.getDefaultToolkit().getImage("dh.png");
setIconImage(icon);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(349, 301);
setLayout(new FlowLayout(FlowLayout.CENTER, 40, 116));
setLocationRelativeTo(null);
bred = new JButton("Rot");
add(bred);
bred.addActionListener(e -> colorRed()); //
Lambda-Ausdrücke
bgreen = new JButton("Grün");
add(bgreen);
bgreen.addActionListener(e -> colorGreen());
bblue = new JButton("Blau");
add(bblue);
bblue.addActionListener(e -> colorBlue());
getContentPane().setBackground(Color.LIGHT_GRAY);
setVisible(true);
}
void changeColors(JButton b, Color fgcol, Color bgcol) {
b.setForeground(fgcol);
b.setBackground(bgcol);
}
void colorRed() {
changeColors(bred, white, red);
changeColors(bgreen, white, red);
changeColors(bblue, white, red);
}
void colorGreen() {
changeColors(bred, black, green);
changeColors(bgreen, black, green);
changeColors(bblue, black, green);
}
void colorBlue() {
changeColors(bred, yellow, blue);
changeColors(bgreen, yellow, blue);
changeColors(bblue, yellow, blue);
}
}
public class LColoredButtons {
public static void main(String[] args) {
new BFrame();
}
}
