在Swing的窗体中安排一个画布,在画布上绘制一个色子,随机产生色子的值. 每次点击画布,随机投掷更换色子的值.
时间: 2024-02-03 21:11:56 浏览: 78
以下是一个示例代码,实现了在Swing的窗体中绘制一个色子,并且可以通过点击画布来随机更换色子的值:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DiceRoller extends JPanel {
private int value = 1; // 初始值为1
public DiceRoller() {
setBackground(Color.WHITE);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
roll(); // 点击画布时随机更换色子的值
}
});
}
public void roll() {
value = (int) (Math.random() * 6) + 1; // 生成1到6之间的随机整数
repaint(); // 重绘画布
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
int size = Math.min(width, height) - 20;
g.setColor(Color.BLACK);
g.drawRect((width - size) / 2, (height - size) / 2, size, size);
g.setColor(Color.RED);
if (value == 1 || value == 3 || value == 5) {
g.fillOval((width - size) / 2 + size / 2 - size / 10, (height - size) / 2 + size / 2 - size / 10, size / 5, size / 5); // 中间的点
}
if (value >= 2) {
g.fillOval((width - size) / 2 + size / 10, (height - size) / 2 + size / 10, size / 5, size / 5); // 左上角
g.fillOval((width - size) / 2 + size - size / 10 - size / 5, (height - size) / 2 + size - size / 10 - size / 5, size / 5, size / 5); // 右下角
}
if (value >= 4) {
g.fillOval((width - size) / 2 + size - size / 10 - size / 5, (height - size) / 2 + size / 10, size / 5, size / 5); // 右上角
g.fillOval((width - size) / 2 + size / 10, (height - size) / 2 + size - size / 10 - size / 5, size / 5, size / 5); // 左下角
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Dice Roller");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
DiceRoller diceRoller = new DiceRoller();
frame.add(diceRoller);
frame.setVisible(true);
}
}
```
运行代码后,可以看到一个窗口中绘制了一个色子,初始值为1。每次点击画布,随机更换色子的值并重绘画布。
阅读全文