Java如何让多个字分别按照不同轨迹运动
时间: 2023-10-09 20:17:27 浏览: 62
你可以使用 Java 的 Graphics 和 Timer 类来实现多个字分别按照不同轨迹运动。以下是一个简单的实现示例:
1. 创建一个继承自 JPanel 的类,命名为 MyPanel,并重写 paintComponent 方法,在该方法中使用 Graphics 类绘制字体。
```java
public class MyPanel extends JPanel {
private List<String> textList; // 存放多个字
private List<Point> pointList; // 存放每个字的位置
private List<Point> velocityList; // 存放每个字的速度
public MyPanel() {
// 初始化字列表、位置列表和速度列表
textList = new ArrayList<>();
textList.add("字1");
textList.add("字2");
pointList = new ArrayList<>();
pointList.add(new Point(100, 0));
pointList.add(new Point(200, 0));
velocityList = new ArrayList<>();
velocityList.add(new Point(0, 10));
velocityList.add(new Point(0, 5));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制每个字
for (int i = 0; i < textList.size(); i++) {
String text = textList.get(i);
Point point = pointList.get(i);
g.drawString(text, point.x, point.y);
}
}
}
```
2. 创建一个继承自 TimerTask 的类,命名为 MyTask,并重写 run 方法,在该方法中更新每个字的位置。
```java
public class MyTask extends TimerTask {
private MyPanel panel;
public MyTask(MyPanel panel) {
this.panel = panel;
}
@Override
public void run() {
// 更新每个字的位置
for (int i = 0; i < panel.textList.size(); i++) {
Point point = panel.pointList.get(i);
Point velocity = panel.velocityList.get(i);
point.x += velocity.x;
point.y += velocity.y;
}
// 重绘面板
panel.repaint();
}
}
```
3. 在主方法中创建 MyPanel 对象和 MyTask 对象,并使用 Timer 类定时执行 MyTask 对象的 run 方法,从而实现多个字的运动效果。
```java
public static void main(String[] args) {
JFrame frame = new JFrame("字体运动轨迹");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setVisible(true);
MyTask task = new MyTask(panel);
Timer timer = new Timer();
timer.schedule(task, 0, 100); // 每隔100毫秒执行一次
}
```
这样,就可以让多个字分别按照不同轨迹运动了。你可以根据需要修改 MyTask 类中的 run 方法,实现不同的运动轨迹和速度。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)