⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpanel2.java

📁 运行环境: JDK1.4以上 程序编写软件:JCreator Application1.java为主类
💻 JAVA
字号:

import java.awt.Graphics;
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.*;
public class JPanel2 extends JPanel {

    int a=0,b;
    int  N=8,num=1;
    int xx=1,yy=1;
    int	 x[]=new int[N+1];
    int  y[]=new int[N+1];
    boolean flag=false; //flag=false表示
        int drawflag=1;
        int huix,huiy;
        /************定义*********************/
        int getxx[]=new int[400],getyy[]=new int[400];
        int gi=0,bi=0;


    public JPanel2(){
     setBackground(Color.white);
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        // }
    }
    public void backDraw(){
        Graphics g=getGraphics();
        int x=50,y=50;
        int c,i=1;
        int width=50,high=50;
        g.drawLine(0,1,200,300);
        /****************消隐bi************************/
        g.setColor(Color.white);
        g.fillRect(x+getxx[bi]*high,y+getyy[bi]*width,width,high);
        /****************显示bi-1************************/
        g.setColor(Color.black);
        g.drawRect(x+getxx[bi]*high,y+getyy[bi]*width,width,high);
        i=getyy[bi-1];
        g.fillRect(x+getxx[bi-1]*high,y+getyy[bi-1]*width,width,high);
                //if(getyy[bi-2])
        //bi=bi-1;
    }
    public void fulldraw(){
        int width=50,high=50;
        int x=50,y=50;
        Graphics gg=getGraphics();
        gg.setColor(Color.white);
        gg.fillRect(0,0,500,500 );
        for(int i=1;i<=8;i++){
              for(int j=1;j<=8;j++)

                  gg.fillRect(x+i*high,y+j*width,width,high);
          }

    }
    public void paint(Graphics gs) {
         int x=50,y=50;
          int c;
          int xn[]=new int[2];
          int yn[]=new int[2];
          int width=50,high=50;
          //gs.setColor(getBackground() );
          //setBackground(Color.white);
          System.out.println("sdfewfw");

          //gs.setColor(Color.white);
        //  gs.fillRect(0,0,600,500);
          gs.setColor(Color.black);
          for(int i=1;i<=8;i++){
              for(int j=1;j<=8;j++)

                  gs.drawRect(x+i*high,y+j*width,width,high);
          }
          //gs.drawRect(x+high,y+width,width,high);

                 if(num<N+1){
                          gs.setColor(Color.black);

                  huiy=yy;
                  huix=xx;
                  System.out.println("yyyyy="+yy);
                  System.out.println("huiyyy="+huiy);

                  if(bi==gi){
                        getXY();
                        gi=gi+1;
                        getxx[gi]=xx;
                        getyy[gi]=yy;
                        bi=gi;

                  }
                  else{
                        xx=getxx[bi];
                        yy=getyy[bi];
                        bi=bi+1;

                  }

                  if(yy<huiy){  //回溯的时候
                      for(int i=1;i<=9;i++){


                      gs.setColor(Color.white);
                      gs.fillRect(x+i*high,y+yy*width,width-1,high-1);
                      gs.fillRect(x+i*high,y+huiy*width,width-1,high-1);
                      gs.fillRect(x+i*high,y+(yy+1)*width,width-1,high-1);
                      if(i!=9){
                          gs.setColor(Color.black);
                          gs.drawRect(x+i*high,y+yy*width,width,high);
                          gs.drawRect(x+i*high,y+(yy+1)*width,width,high);
                      }
                      else{
                          gs.setColor(Color.black);
                          gs.drawLine(x+9*width,y+width,x+9*width,y+9*width);
                      }
                      }
                  }
                 gs.setColor(Color.black);
                 gs.fillRect(x+xx*high,y+yy*width,width,high);

               }
               else
                  drawflag=drawflag+1;

               print();

            //   gs.fillRect(0,0,300,300);
            //  for(int i=1;i<=8;i++){
                 //  c=gettest();
                 //  gs.fillRect(x+c*high,y+i*width,width,high);
            //   }



      }
      public int getNum(){
          int a;
          a=num;
          System.out.println(a);
          return a;


      }
      public void print (){
          for(int i=1;i<=8;i++)
              System.out.println("yp="+y[i]);
      }
      public boolean check(int n,int yn){//该方法用来检验冲突,int n,int y为被检验的行值和列值,如果该位置不冲突,返回true;
                   //int n=this.n;
                   //int yn=this,yn;	n
                   for(int j=1;j<n;j++){
                          // System.out.println("y[j]="+y[j]);
                           //System.out.println(" yn="+yn);

                           if((Math.abs(n-j) == Math.abs(y[j] - yn))||(y[j]==yn))
                                   return false;
                   }
                   return true;
      }
      public int layer(int i,int yn){  //i是第i层,yn表示第num层的取值
                  int j=i;
                  for(;yn<N+1;yn++,j++){
                         // System.out.println("yn="+yn);

                          if(check(i,yn)==true){  //如果check不成功说明被杀
                                  y[i]=yn;
                                  System.out.println("ynnn="+y[i]);
                                  flag=false;
                                  //return  yn;
                                  break;
                          }
                          //else			//check不成功

                  }
                  if(yn==N+1){			//这一层不成功
                          flag=true;

                          return 9;

                  }
                  return yn;
          }
      public void creatQ(int a){
                                System.out.println("fancreatQ1="+y[1]);
                     for(int i=1;i<=N;i++)
                                  y[i]=1;
                     y[1]=a;
                    System.out.println("fancreatQ2="+y[1]);
      }
      public void FanNum(int n){
          num=n;
          System.out.println("="+num);
      }
       public void getXY(){
               if(num<N+1){
                   layer(num,y[num]);
                   if(flag){
                       xx=8;
                       yy=num;
                   }
                   else{
                       yy=num;
                       xx=y[num];
                   }
                   System.out.println("num="+num);
                   System.out.println("yn="+y[num]);

                   if(flag&&num!=1&&num!=2){
                       if(num==3){
                           System.out.println("Error");
                       }
                       num=num-2;
                       y[num]=y[num]+1;      //四的答案是什么再调试
                   }
                   else{
                       num=num+1;
                       if(num<=N){
                           y[num]=1;
                       }
                   }
               }
               System.out.println("yy="+yy);
               System.out.println("xx="+xx);
           }

    private void jbInit() throws Exception {
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -