用java swing编写一个界面,界面上有一个按钮,按下按钮之后,屏幕上出现自左至右和自右至左运动的蓝色圆点。出现的高度是随机的(但不能太靠近画板的上下边缘),高度始终保持不变,直至碰到左或右边框后消失。
时间: 2024-05-12 10:18:16 浏览: 33
java swing 图形 界面
好的,您的问题我已经了解了,让我来为您回答。
首先,您需要创建一个 JFrame 窗口对象,并设置窗口大小和标题等属性。然后,在窗口上添加一个 JButton 按钮,并为按钮添加一个 ActionListener 监听器。当用户单击按钮时,监听器将启动一个线程来处理动画效果。
在线程内部,您需要使用 Graphics2D 对象来绘制圆点。其中,使用 Random 类生成随机高度,并确保圆点不在画板上下边缘附近。然后,使用 Timer 定时器类在一定时间间隔内不断更新圆点的位置和绘制,直到圆点碰到窗口的左右边框。
下面是参考代码:
```java
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 java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class CircleAnimation extends JPanel {
private final int WIDTH = 500;
private final int HEIGHT = 500;
private final int RADIUS = 10;
private int x = 0;
private int y = 0;
private Timer timer;
public CircleAnimation() {
setLayout(null);
JButton button = new JButton("Start Animation");
button.setBounds(200, 10, 120, 30);
add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (timer == null || !timer.isRunning()) {
timer = new Timer(50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
x += 5;
repaint();
}
});
timer.start();
}
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.BLUE);
g2d.fillOval(x, y, RADIUS, RADIUS);
}
@Override
public int getHeight() {
return HEIGHT;
}
@Override
public int getWidth() {
return WIDTH;
}
public static void main(String[] args) {
JFrame frame = new JFrame("Circle Animation");
CircleAnimation panel = new CircleAnimation();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setSize(panel.getWidth(), panel.getHeight());
frame.setVisible(true);
}
}
```
请注意,此代码仅演示了圆点从左至右的动画效果,您需要根据需求调整定时器和绘制代码来实现从右至左的动画效果。同时,您也可以根据需求为圆点添加其他的运动路径和样式。
阅读全文