import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Main extends JFrame {
Main() {
setLayout(new FlowLayout());
add(new JDie());
add(new JDie());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
class JDie extends JPanel {
private static final int SIDE = 32;
private static final Random r = new Random();
private Color color;
private int value = getValue();
private final Timer t = new Timer(500, null);
JDie() {
value = getValue();
t.addActionListener(e-> {
value = getValue();
repaint();
});
t.start();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(SIDE * 7, SIDE * 7);
}
private int getValue() {
color = Color.getHSBColor(r.nextFloat(), 1, 1);
return r.nextInt(6) + 1;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(color);
switch (value) {
case 1:
g.fillRect(3 * SIDE, 3 * SIDE, SIDE, SIDE);
break;
case 2:
g.fillRect(5 * SIDE, SIDE, SIDE, SIDE);
g.fillRect(SIDE, 5 * SIDE, SIDE, SIDE);
break;
case 3:
g.fillRect(5 * SIDE, SIDE, SIDE, SIDE);
g.fillRect(SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(3 * SIDE, 3 * SIDE, SIDE, SIDE);
break;
case 4:
g.fillRect(SIDE, SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, SIDE, SIDE, SIDE);
g.fillRect(SIDE, 5 * SIDE, SIDE, SIDE);
break;
case 5:
g.fillRect(SIDE, SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, SIDE, SIDE, SIDE);
g.fillRect(SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(3 * SIDE, 3 * SIDE, SIDE, SIDE);
break;
case 6:
g.fillRect(SIDE, SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, SIDE, SIDE, SIDE);
g.fillRect(SIDE, 5 * SIDE, SIDE, SIDE);
g.fillRect(SIDE, 3 * SIDE, SIDE, SIDE);
g.fillRect(5 * SIDE, 3 * SIDE, SIDE, SIDE);
break;
}
}
}