用java线程怎么使用容器JPanel画的图片滚动,最好是有代码,谢谢

 我来答
雪飞潇潇
2016-01-07 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:868万
展开全部

使用swing的Timer 类, 可以实现控制UI线程, 比如JPanel的移动等

参考代码如下

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class FrameDemo extends JFrame {

SunPanel sp;
Timer timer;
int w = 600;
int h = 400;
int px = w - 20;
int py = h - 20;

public FrameDemo() {
setTitle("太阳窗口");
setSize(w, h);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLayout(null);
sp = new SunPanel();
sp.setBounds(px, py, 58, 58);

add(sp);
timer = new Timer(10, new ActionListener() {//每10毫秒改变一次太阳的位置, 可以自己加快或者放慢,修改毫秒数就可以

public void actionPerformed(ActionEvent e) {
sp.setLocation(px -= 2, py -= 1);// 可以修改成px-=3 ,py-=2等方式来控制每次移动的快慢
if (px <= 0 || py <= 0) {
timer.stop();
}
}
});
timer.start();//开始
}

public static void main(String[] args) {
new FrameDemo().setVisible(true);
}

class SunPanel extends JPanel {
public void paint(Graphics g) {
g.setColor(Color.RED);
g.drawOval(2, 2, 50, 50);
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式