小弟 想写个蜘蛛牌游戏 可是到对扑克进行拖拽时 却有重影 好似我拖动一个牌时从左上角会出现一个一摸一样的牌 就像拖动一个牌 有两个牌都在响应 不知为何 请高人指点 小弟将不胜感激
代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;public class Spider extends JButton{
static Spider[] spiders = new Spider[104];
public static final int WEIGHT=71;
public static final int HEIGHT=96;
int x;
int y;
//private static Spider spider=this;
Rectangle rac;
static Table table =null;
static String[] imaName={"images/1-1.gif","images/1-2.gif","images/1-3.gif","images/1-4.gif","images/1-5.gif",
"images/1-6.gif","images/1-7.gif","images/1-8.gif","images/1-9.gif","images/1-10.gif","images/1-11.gif","images/1-12.gif","images/1-13.gif","images/rear.gif"};
//ImageIcon [] imas ={new ImageIcon("1-1.gif"),};
//构造函数
public Spider(String name,int x,int y,Table table){
super(new ImageIcon(name));
//this.x=x;
//this.y=y;
this.table=table;
this.setSize(WEIGHT, HEIGHT);
this.setLocation(x, y);
this.addMouseMotionListener(new MouseLis());
this.setVisible(true);
}
// ==================================移动
public void moveTo (int x,int y) {
this.x=x;
this.y=y;
this.setLocation(x, y);
}
//=================================初始化
public static void initC(){
ArrayList<Spider> list = new ArrayList<Spider>();
int count=0;
for(int i=0; i<8;i++){
for(int j=0;j<13;j++,count++){
Spider s=new Spider(imaName[j],0,0,table);
s.setVisible(false);
spiders[count]= s;
//list.add(spiders[count]);
table.con.add(spiders[count]);
}
}
//打乱顺序====================================
Random ran = new Random();
for(int i=0;i<100;i++){
int a=ran.nextInt(104);
int b=ran.nextInt(104);
Spider s=spiders[a];
spiders[a]=spiders[b];
spiders[b]=s;
}
//发牌===================================
int x=50;
int y=50;
for(int i=0;i<24;i++){
//Spider s= list.get(i);
Spider s= spiders[i];
s.moveTo(x,y);
table.con.setComponentZOrder(s, 0);
s.setVisible(true);
y+=30;
if((i+1)%6==0) {
x+=110;
y=50;
}
}
for(int i=24;i<54;i++){
//Spider s= list.get(i);
Spider s= spiders[i];
s.moveTo(x,y);
table.con.setComponentZOrder(s, 0);
s.setVisible(true);
y+=30;
if((i+2)%5==0) {
x+=110;
y=50;
}
}
}
//该内部类为处理鼠标拖拽事件===================================================================
class MouseLis extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) {
int x= e.getX();
int y= e.getY();
JButton b =(JButton) e.getSource();
//int x= bu.getX();
//int y= bu.getY();
Spider.this.moveTo(x,y);
//Spider.this.setComponentZOrder(Spider.this, 0);
} // public void mouseMoved(MouseEvent e) {
// int x= e.getX();
// int y= e.getY();
// Spider.this.setLocation(x, y);
//} }
}跪求答案!
游戏
代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;public class Spider extends JButton{
static Spider[] spiders = new Spider[104];
public static final int WEIGHT=71;
public static final int HEIGHT=96;
int x;
int y;
//private static Spider spider=this;
Rectangle rac;
static Table table =null;
static String[] imaName={"images/1-1.gif","images/1-2.gif","images/1-3.gif","images/1-4.gif","images/1-5.gif",
"images/1-6.gif","images/1-7.gif","images/1-8.gif","images/1-9.gif","images/1-10.gif","images/1-11.gif","images/1-12.gif","images/1-13.gif","images/rear.gif"};
//ImageIcon [] imas ={new ImageIcon("1-1.gif"),};
//构造函数
public Spider(String name,int x,int y,Table table){
super(new ImageIcon(name));
//this.x=x;
//this.y=y;
this.table=table;
this.setSize(WEIGHT, HEIGHT);
this.setLocation(x, y);
this.addMouseMotionListener(new MouseLis());
this.setVisible(true);
}
// ==================================移动
public void moveTo (int x,int y) {
this.x=x;
this.y=y;
this.setLocation(x, y);
}
//=================================初始化
public static void initC(){
ArrayList<Spider> list = new ArrayList<Spider>();
int count=0;
for(int i=0; i<8;i++){
for(int j=0;j<13;j++,count++){
Spider s=new Spider(imaName[j],0,0,table);
s.setVisible(false);
spiders[count]= s;
//list.add(spiders[count]);
table.con.add(spiders[count]);
}
}
//打乱顺序====================================
Random ran = new Random();
for(int i=0;i<100;i++){
int a=ran.nextInt(104);
int b=ran.nextInt(104);
Spider s=spiders[a];
spiders[a]=spiders[b];
spiders[b]=s;
}
//发牌===================================
int x=50;
int y=50;
for(int i=0;i<24;i++){
//Spider s= list.get(i);
Spider s= spiders[i];
s.moveTo(x,y);
table.con.setComponentZOrder(s, 0);
s.setVisible(true);
y+=30;
if((i+1)%6==0) {
x+=110;
y=50;
}
}
for(int i=24;i<54;i++){
//Spider s= list.get(i);
Spider s= spiders[i];
s.moveTo(x,y);
table.con.setComponentZOrder(s, 0);
s.setVisible(true);
y+=30;
if((i+2)%5==0) {
x+=110;
y=50;
}
}
}
//该内部类为处理鼠标拖拽事件===================================================================
class MouseLis extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) {
int x= e.getX();
int y= e.getY();
JButton b =(JButton) e.getSource();
//int x= bu.getX();
//int y= bu.getY();
Spider.this.moveTo(x,y);
//Spider.this.setComponentZOrder(Spider.this, 0);
} // public void mouseMoved(MouseEvent e) {
// int x= e.getX();
// int y= e.getY();
// Spider.this.setLocation(x, y);
//} }
}跪求答案!
游戏
解决方案 »
- JAVA 中main()方法描述,是否正确?
- 关于反射得到一个类型如何与基本类型比较?
- Panel 做登录界面打进入下级菜单的问题
- 请教applet曲线图的问题,如何获取数据最好.先谢谢了
- 请问wait()与notify()如何使用?
- 98下 安装jdk如何 配置环境变量
- 用JDBC可以取到数据库表之间的主外键关系吗?
- 调查portal的情况 比如发展 应用 前途
- 这个程序有点问题编译过了但运行不行希望大家给点支援哈
- 求大神,java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- 求大神帮助
- 有人用过 HttpAsyncClient 的post提交吗?为什么总是失败啊?麻烦大家帮忙看看?代码可以直接运行的啊~~~~~~~~~~~~~~~~~~~
public class MovePicture extends JFrame implements MouseListener,
MouseMotionListener {
JLabel image = null;
Point mouseInitPoint = null;
Point labelInitLocation=null;
Point mouseP=null;
MovePicture() {
this.setBounds(200, 100, 400, 400);
this.setLayout(null);
// image=new JLabel(new ImageIcon("9.jpg"));
Toolkit tk = Toolkit.getDefaultToolkit();
image = new JLabel(new ImageIcon(tk.createImage("9.jpg")));
image.setSize(50, 80);//不能缩小图片
image.setLocation(50, 50);//相对Frame
image.addMouseListener(this);
image.addMouseMotionListener(this);
this.add(image);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
new MovePicture(); } @Override
public void mousePressed(MouseEvent e) {
//记录下图片的初始位置
labelInitLocation=image.getLocation();
//记录下鼠标的初始位置
mouseInitPoint=e.getPoint();
}
@Override
public void mouseDragged(MouseEvent e) {
// 鼠标按下并移动的时候,让图片跟着一起移动
// 记录鼠标当前的位置是哪里
mouseP = e.getPoint();
// 计算平移了多远
int x = (int) (mouseP.getX() -mouseInitPoint.getX());
int y = (int) (mouseP.getY() -mouseInitPoint.getY());
//让图片移动到新的位置上
image.setLocation((int)(labelInitLocation.getX()+x),(int)(labelInitLocation.getY()+y));
//让图片的起点坐标重新设置
labelInitLocation.x=(int)(labelInitLocation.getX()+x);
labelInitLocation.y=(int)(labelInitLocation.getY()+y);
System.out.println("x="+x+" y="+y);
} @Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub } @Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub }}