有两个基础问题,麻烦高手解答下 1.如何判断鼠标点击的坐标?2.那控制坐标的改变是用TIMER么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1:<img type="button"....>2:通过修改图片坐标的位置来完成,设置每个时间间隔网上找一下吧,很多的, 1.如何判断鼠标点击的坐标?实现MouseListener,然后注册到这个listener,点击的时候就可以捕捉了,看看事件处理方面的书2.那控制坐标的改变是用TIMER么?可以,用线程也行 问题一(有点复杂但绝对好用): 1.从JPanel继承一个自定义类; 2.在paintComponent()方法中绘图片; 3.使用是直按用addActionListener就行。问题二: 1.从JPanel继承一个自定义类,并实现Runnable接口; 2.声明两个int变量用来指定绘图位置; 3.在类中开一个线程,按一定的时间间隔不段改变两占int变量的值; 4.重写paintComponent(),在其中绘制图片。 第一个问题解决了,但是第二个还有问题.我写了这样的内隐类private class doorMove implements Runnable{ public void run() { while(((lx!=-90)||(rx!=180))&&(open==true)) { System.out.print("1"); try { Thread.sleep(100); } catch(InterruptedException e) { } lx-=2;rx+=2; Elev_LRdoor.remove(Elev_Ldoor); repaint(); Elev_LRdoor.remove(Elev_Rdoor); repaint(); Elev_Ldoor_Icon=new ImageIcon("ImageBG/elev_ldoor.jpg"); Elev_Ldoor=new JLabel(Elev_Ldoor_Icon); Elev_Ldoor.setBounds(lx,0,90,280); Elev_LRdoor.add(Elev_Ldoor); repaint(); Elev_Rdoor_Icon=new ImageIcon("ImageBG/elev_rdoor.jpg"); Elev_Rdoor=new JLabel(Elev_Rdoor_Icon); Elev_Rdoor.setBounds(rx,0,90,280); Elev_LRdoor.add(Elev_Rdoor); repaint(); } } }想通过重画JLabel来实现图片的移动,但是问题来了,我创建doorMove doormove=new doorMove();然后doormove.run()后,我本来希望他移动的JLabel并不移动,而是这个程序都停止运行,一直到这个函数完成后两个JLabel的位置突然从起始变到了终点,然后程序又开始运行,似乎移动没有实现,另外多线程也没有实现,麻烦大家出出主意,找找错,万谢了 有关ThreadFactory的调用问题,请教大家 Java 中怎么实现一次编译,到处运行? JAVA初学者一个问题 套接字(Socket) socket通信两端的数据流要同时开吗 jni传递二维数组的问题 多线程的出来 关于字体的问题 请问如何在Java程序里启动(or调用)一个外部程序?? sjcp(4) 一个绝对路径问题 一个奇怪的事件异常,大家来看看
2:通过修改图片坐标的位置来完成,设置每个时间间隔
网上找一下吧,很多的,
实现MouseListener,然后注册到这个listener,点击的时候就可以捕捉了,看看事件处理方面的书2.那控制坐标的改变是用TIMER么?
可以,用线程也行
1.从JPanel继承一个自定义类;
2.在paintComponent()方法中绘图片;
3.使用是直按用addActionListener就行。问题二:
1.从JPanel继承一个自定义类,并实现Runnable接口;
2.声明两个int变量用来指定绘图位置;
3.在类中开一个线程,按一定的时间间隔不段改变两占int变量的值;
4.重写paintComponent(),在其中绘制图片。
我写了这样的内隐类
private class doorMove implements Runnable{
public void run()
{
while(((lx!=-90)||(rx!=180))&&(open==true))
{
System.out.print("1");
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{
}
lx-=2;rx+=2;
Elev_LRdoor.remove(Elev_Ldoor);
repaint();
Elev_LRdoor.remove(Elev_Rdoor);
repaint();
Elev_Ldoor_Icon=new ImageIcon("ImageBG/elev_ldoor.jpg");
Elev_Ldoor=new JLabel(Elev_Ldoor_Icon);
Elev_Ldoor.setBounds(lx,0,90,280);
Elev_LRdoor.add(Elev_Ldoor);
repaint();
Elev_Rdoor_Icon=new ImageIcon("ImageBG/elev_rdoor.jpg");
Elev_Rdoor=new JLabel(Elev_Rdoor_Icon);
Elev_Rdoor.setBounds(rx,0,90,280);
Elev_LRdoor.add(Elev_Rdoor);
repaint();
}
}
}
想通过重画JLabel来实现图片的移动,但是问题来了,我创建doorMove doormove=new doorMove();然后
doormove.run()后,我本来希望他移动的JLabel并不移动,而是这个程序都停止运行,一直到这个函数完成后两个JLabel的位置突然从起始变到了终点,然后程序又开始运行,似乎移动没有实现,另外多线程也没有实现,麻烦大家出出主意,找找错,万谢了