// JavaProject ColoredGrid
24 Panels werden per Mausklick zufällig eingefärbt. Bei dem
Parameter, welcher der Methode setBackground jeweils übergeben wird, handelt es sich
nicht um einen Farbwert, sondern um ein Farbobjekt vom Typ Color.
Die Klasse Color stellt Konstanten zur Verfügung, wie z.B. Color.BLACK, Color.CYAN, Color.DARK_GRAY, Color.ORANGE, welche die entsprechenden Farben referenzieren.
Darüberhinaus kann jede Farbe des sRGB-Farbraumes erzeugt
werden. Beispielsweise sind etwa folgende Aufrufe möglich:
Color(0.7f, 0f, 0.35f);
(die Parameter sind float-Literale; die Farbwerte liegen zwischen 0 und 1)
oder
Color(12, 165, 201); (die
Parameter sind ganzzahlig; die Farbwerte liegen zwischen 0 und 255).
// ColoredGrid.java
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.GridLayout;
import javax.swing.*;
class CMenuBar extends JMenuBar implements ActionListener {
private static final long serialVersionUID = 0L;
JMenu start;
JMenuItem start_dye;
JMenuItem start_clear;
CFrame cfr;
public CMenuBar(CFrame cfr) {
this.cfr = cfr;
start = new JMenu("Start");
add(start);
start_dye = new JMenuItem("Färben");
start_dye.addActionListener(this);
start.add(start_dye);
start_clear = new JMenuItem("Löschen");
start_clear.addActionListener(this);
start.add(start_clear);
}
public void actionPerformed(ActionEvent object) {
if (object.getSource() == start_dye) cfr.dyePanels();
if (object.getSource() == start_clear) cfr.clearPanels();
}
}
class CFrame extends JFrame {
private static final long serialVersionUID = 0L;
Image icon;
CMenuBar menubar;
JPanel[] panels; //
Arrays
Color bgcol;
public CFrame() {
setTitle("Bunte Kacheln");
icon = Toolkit.getDefaultToolkit().getImage("dh.png");
setIconImage(icon);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(349, 301);
setLocationRelativeTo(null);
menubar = new CMenuBar(this);
setJMenuBar(menubar);
setBackground(Color.WHITE);
setLayout(new GridLayout(6, 4, 2, 2));
bgcol = new Color(230, 230, 230);
panels = new JPanel[24];
for (int i=0; i<24; i++) { //
Schleifen
panels[i] = new JPanel();
panels[i].setBackground(bgcol);
add(panels[i]);
}
setVisible(true);
}
public void dyePanels() {
int r, g, b;
for (int i=0; i<24; i++) {
r = (int) (255*Math.random()); //
Typumwandlungen
g = (int) (255*Math.random());
b = (int) (255*Math.random());
Color newcol = new Color (r, g, b);
panels[i].setBackground(newcol);
}
}
public void clearPanels() {
for (int i=0; i<24; i++) {
panels[i].setBackground(bgcol);
}
}
}
public class ColoredGrid {
public static void main(String[] args) {
new CFrame();
}
}
