界面上有三个容器,一个物体分别通过这三个容器.用java如何动态的(比如说闪动的点)显示它从这三个容器走过的轨迹!
解决方案 »
- java算法的一道题(面试)
- 各位高手,请假了,新生提问,谢谢!!
- Java入门问题,在void方法中打印外面的方法报错(该方法有返回值),请教原理。
- java连接sqlserver问题java.sql.SQLException: No suitable driver
- 关于APPLET的问题
- 这个问题怎么解决?
- 学JAVA到底学什么!!!!!!!!!!!!!!!!!
- Java Advanced Imaging中的问题
- RMI服务端为什么没有rmic生成的impl_skel.class也能运行,反而要impl_stub.class???
- JAVA高手,JAVA 有前途,还是VC有前途
- 怎么在在Action里得到页面的数据,然后跳转到另一个Action里(得到的数据也一起带过去)?
- JAVA有没有改文件名的方法?
写了点东西,希望能帮助到你。
大概的思路是:
1:肯定需要一个线程。
2:需要一个画布JFrame,和一个移动的物体(继承自JComponent,
并且重写他的paint方法,在这里你可以决定这个物体是一个点还是什么的,
再调用repaint方法重画这个物体)。
3:定义了一个roadmap类,来描述画点的位置。
这个不好定义,你可以用一个list的东西,来放置计算好的位置。
如上面你所说的(显示它从这三个容器走过的轨迹),那么你肯定要在这个类中定义好你想要显示的每个位置。
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
class Area extends JComponent{
RoadMap roadMap; public Area(RoadMap roadMap) {
this.roadMap = roadMap;
setBackground(Color.WHITE);
setOpaque(true);
} public void paint(Graphics g) {
if (isOpaque()) {
g.setColor(getBackground());
g.fillRect(getX(), getY(), getWidth(), getHeight());
}
g.setColor(Color.BLUE);
g.fill3DRect(roadMap.getPoint().x, roadMap.getPoint().y, 15, 15, true);
}
public void doTask(){
new Thread(){
public void run(){
while (true){
try{
this.sleep(50);
Area.this.repaint();
}catch(Exception e){
}
}
}
}.start();
}
}
class RoadMap{
private int i;
private int j;
private Point p=new Point();
public Point getPoint(){
p.x+=1;
p.y+=1;
return p;
}
}public class Test {
Area area = new Area(new RoadMap());
private void buildUI(Container container) {
container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
container.add(area);
area.setAlignmentX(Component.LEFT_ALIGNMENT);
area.doTask();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.setPreferredSize(new Dimension(300,500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Test controller = new Test();
controller.buildUI(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}}