1、连连看里的连线是怎么实现的?...还有那种波浪的连线,爆炸效果...
2、我用JButton[][] bt = new JButton[8][8]  的二维按钮数组;
想用
for(int x = 0; x < bt.length; x++){
  for(int y = 0; j < bt.length; y++){
       bt[x][y].addMouseListener(new MouseAdepter(){
            public void mousePressed(MouseEvent e){
                    GetInfo(x,y,bt[x][y]);//这个方法是用来记录按钮的信息的public 方法                                                     }
                                          });   
                                   }
          }结果只有最后一个按钮bt[8][8]被监听了,其他的都没有反应,,,难道只有逐个的加监听吗???
谢谢了!!分不多大弟大妹大哥大姐大叔阿姨请见谅

解决方案 »

  1.   

    补充:开始说局部变量x,y不能在那个内部类里出现,然后我就把它搞成了全局变量。。结果是
    for(x = 0; x  < bt.length; x++){ 
      for(y = 0; j  < bt.length; y++){ 
           bt[x][y].addMouseListener(new MouseAdepter(){ 
                public void mousePressed(MouseEvent e){ 
                        GetInfo(x,y,bt[x][y]);//这个方法是用来记录按钮的信息的public 方法                                                      } 
                                              });    
                                       } 
              } 结果只有最后一个按钮bt[8][8]被监听了,其他的都没有反应,,,难道只有逐个的加监听吗??? 
      

  2.   


    你的for(y=0;j<bt.length;y++)里面的j是什么玩意?是本来就打错还是发贴时弄错了
      

  3.   

    添加事情监听的那段代码本身应该没有问题;
    连连看的连线可以在连线事件中根据点的坐标关系实现:比如三条线消去时,情况就是(x1,y1),(x1,y2),(x2,y2),(x2,y3),第一个和最后一个点是button的坐标,中间点是允许的轨迹,如果ture,就删除button并在坐标上给出爆炸效果。这样应该包含了两条线和一条线的情况,因为y1,y2和y3,x1,和x2可以相等。把其他消去情况考虑周全应该可以实现
      

  4.   

    谢谢你的回答...我只是不知道,坐标都是可以找到的,就是不知道怎么给它画出来,而且是画出来后一段时间后消失(这个估计是用TIMER实现的)关键就是画的问题--用什么方法实现
      

  5.   

    画线需要你的所有的东西都在一个Panel上的,调用paint绘制所有的界面吧
      

  6.   

    我也有这个问题,不过使用c++写的,那时只写了方框,没有写连线我觉得可以再算法中实现有直接连
    一个折点连
    两个折点连
     
    既然能判断了,那就在这里进行连线就好了例如 声明 变量 flag =false;       然后判断是那种连法:直接连不行就判断一个折点的 ,再不行就判断两个折点
    总有一个行吧?(除非不能连)  如果某种算法连通了,flag =true;然后呵呵 ,用数组记录连接路径  ,必定都是矩阵嘛很好记录的
    然后…… 化线就可以了吧,当时是这么想的,但是没有继续做下去。  
      

  7.   

    给你个地址,讲用JAVA做连连看开发过程的http://hi.baidu.com/yunke/blog/item/4504e9ed67a4114c79f055a6.html
    要说清楚具体怎么画线很费事的,定好了算法,再考虑各种情况实现,可以说连线算是这个程序的一个重要部分(或许是最重要~)。
      

  8.   

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */package jndi;
    import java.awt.FlowLayout;
    import javax.swing.*;
    /**
     *
     * @author silence
     */
    public class Link {
        private JFrame indexFrame = new JFrame("good");
        public JButton [][]myButton = new JButton[8][8];
        public void enter()
        {
            indexFrame.setSize(500,500);
            indexFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            indexFrame.setLayout(new FlowLayout());
            for(int i=0;i<8;i++)
            {
                for(int j=0;j<8;j++)
                {
                    myButton[i][j] = new JButton(""+i+j);
                    indexFrame.add(myButton[i][j]);
                    
                }
            }
            indexFrame.setVisible(true);
        }
        public static void main(String []args)
        {
            Link link = new Link();
            link.enter();
        }
    }