import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import java.io.*;public class chess {
      static JFrame f = new JFrame("Test DrawLine!");
      public chess() {
           super();
      }
  static int tile=0;
      public static void main(String[] args) {
 
int n=0;
int r=0,c=0;
    System.out.println("please input num");
InputStreamReader isr = new InputStreamReader(System.in); 
BufferedReader br = new BufferedReader( isr );

    
try {
n = Integer.parseInt(br.readLine());
} catch (NumberFormatException e1) {

e1.printStackTrace();
} catch (IOException e1) {

e1.printStackTrace();
} catch(ArrayIndexOutOfBoundsException e){

e.printStackTrace();
}
System.out.println("please input r and c");

try {
r = Integer.parseInt(br.readLine());
c = Integer.parseInt(br.readLine());
} catch (NumberFormatException e1) {

e1.printStackTrace();
} catch (IOException e1) {

e1.printStackTrace();
} catch(ArrayIndexOutOfBoundsException e){

e.printStackTrace();
}
           chess ch=new chess();
   ch.init(n);
   ChessBoard(1,1,r, c,n);
       }//end main
      private void init(int num) {
   final int n=num;   //必须是final
           f.setSize(600,500);
           f.setVisible(true);
           f.addMouseListener(new MouseAdapter(){
 int orgX;
 int orgY;
 public void mousePressed(MouseEvent e){
   orgX = 50;
   orgY = 50;
 }
 public void mouseReleased(MouseEvent e){
Graphics g = f.getGraphics();
g.setColor(Color.RED); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new String(orgX+","+orgY),orgX,orgY);
 //打印鼠标按下时的坐标文本
for(int i=0;i<=n;i++)
 { 
g.drawLine(orgX,orgY+i*30,orgX+30*n,orgY+i*30);
 }
 for(int j=0;j<=n;j++)
 {
 g.drawLine(orgX+j*30,orgY,orgX+30*j,orgY+n*30);
 }          }
   }//end addMouseListener
   );
     }//end init static void ChessBoard(int tr,int tc,int dr, int dc,int s)
{

/*int size=s;
if(size==1);

else{
 int  t = tile++;
s=size/2;
if(dr<tr+s&&dc<tr+s)
ChessBoard(tr,tc,dr,dc,s);
else{
Graphics g = f.getGraphics();
g.setColor(Color.BLACK); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new
 String(""+tile),50+(tr+s-1)*30-15,50+(tc+s-1)*30-15); 
ChessBoard(tr,tc,tr+s-1,tc+s-1,s);
} if(dr<tr+s&&dc>=tc+s) ChessBoard(tr,tc+s,dr,dc,s);
else{
Graphics g = f.getGraphics();
g.setColor(Color.BLACK); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new
 String(""+tile),50+(tr+s-1)*30-15,50+(tc+s)*30-15); 
ChessBoard(tr,tc+s,tr+s-1,tc+s,s);
} if(dr>=tr+s&&dc<tc+s) ChessBoard(tr+s,tc,dr,dc,s);
else{
Graphics g = f.getGraphics();
g.setColor(Color.BLACK); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new
 String(""+tile),50+(tr+s)*30-15,50+(tc+s-1)*30-15); 
ChessBoard(tr+s,tc,tr+s,tc+s-1,s);
} if(dr>=tr+s&&dc>=tc+s) ChessBoard(tr+s,tc+s,dr,dc,s);
else{
Graphics g = f.getGraphics();
g.setColor(Color.BLACK); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new String(""+tile),50+(tr+s)*30-15,50+(tc+s)*30-15); 
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}*/
Graphics g = f.getGraphics();
System.out.println("GET G END");

g.setColor(Color.RED); //设置绘图颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
g.drawString(new String("DHJFHKJHK"+tile),50,50); 
System.out.println("FA END");
}
       }
  
      
为什么ChessBoard()方法画不上去????

解决方案 »

  1.   

    问题改为为什么这个也画不出来了.import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JFrame;
    import java.io.*;public class chess2 {
          static JFrame f = new JFrame("Test DrawLine!");
          public chess2() {
               super();
          }
      static int tile=0;
          public static void main(String[] args) {
     
    int n=0;
    int r=0,c=0;
        System.out.println("please input num");
    InputStreamReader isr = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader( isr );

        
    try {
    n = Integer.parseInt(br.readLine());
    } catch (NumberFormatException e1) {

    e1.printStackTrace();
    } catch (IOException e1) {

    e1.printStackTrace();
    } catch(ArrayIndexOutOfBoundsException e){

    e.printStackTrace();
    }
    System.out.println("please input r and c");

    try {
    r = Integer.parseInt(br.readLine());
    c = Integer.parseInt(br.readLine());
    } catch (NumberFormatException e1) {

    e1.printStackTrace();
    } catch (IOException e1) {

    e1.printStackTrace();
    } catch(ArrayIndexOutOfBoundsException e){

    e.printStackTrace();
    }
               chess2 ch=new chess2();
       ch.init(n);
    //   ChessBoard(1,1,r, c,n);
           }//end main
          private void init(int num) {
       final int n=num;   //必须是final
               f.setSize(600,500);
               f.setVisible(true);
               

    Graphics g = f.getGraphics();
    g.setColor(Color.RED); //设置绘图颜色
    g.setFont(new Font("隶书", Font.BOLD, 20)); //设置文本字体
    g.drawString("(50,50)",50,50);
     //打印鼠标按下时的坐标文本
    for(int i=0;i<=n;i++)
     { 
    g.drawLine(50,50+i*30,50+30*n,50+i*30);
     }
     for(int j=0;j<=n;j++)
     {
     g.drawLine(50+j*30,50,59+30*j,50+n*30);
     }          

         }//end init
           }
      
          
      

  2.   

    画图应该写在paint事件中。
    有变动,如大小改变时,在repaint()事件中更新.