xiaoyong931011
2023-03-28 d83c9be06ca59d5d45c884e46c5a8aefa6b65123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package cc.mrbird.febs.websocket;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
 
public class Ball extends JPanel implements ActionListener {
    private Timer timer;
    private int x, y;
    private int size;
 
    public Ball() {
        x = 0;
        y = 0;
        size = 20;
        timer = new Timer(10, this);
        timer.start();
    }
 
    // 重写paintComponent方法,绘制红色的球
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        // 开启抗锯齿
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        // 设置颜色为红色
        g2d.setColor(Color.RED);
        // 绘制圆形
        g2d.fillOval(x, y, size, size);
    }
 
    // 重写actionPerformed方法,控制球的大小
    @Override
    public void actionPerformed(ActionEvent e) {
        // 如果球的大小小于100,则增加大小
        if (size < 100) {
            size++;
        } else {
            // 否则减小大小
            size--;
        }
        // 重新绘制
        repaint();
        // 控制球的移动
        x++;
        if (x > getWidth()) {
            x = 0;
        }
    }
 
    public static void main(String[] args) {
        // 创建窗口
        JFrame frame = new JFrame("Ball");
        // 添加球
        frame.add(new Ball());
        // 设置窗口大小
        frame.setSize(300, 300);
        // 显示窗口
        frame.setVisible(true);
        // 设置关闭窗口时的操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}