2012-04-08 35 views
0

網格看起來像這樣。 http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/s320x320/532063_426018057411895_100000111130260_1879195_1266764275_n.jpg從網格中斷線

我在循環中插入了if語句來繪製行來製作換行符。 但是,該程序的功能就好像if語句不在那裏一樣。 if語句不夠嗎?

import java.awt.*; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.Graphics; 
import javax.swing.*; 

public class Grid extends Canvas{ 

    Cell[][] maze; 
    int rows; 
    int cols; 
    int pathSize; 
    double width, height; 


    public Grid(int rows, int cols, int h, int w) { 
     this.rows = rows; 
     this.cols = cols; 
     maze = new Cell[rows][cols]; 
     setPreferredSize(new Dimension(h,w)); 
    } 


    public static void main(String[] args){ 
    JFrame y = new JFrame(); 
    y.setLayout(new BorderLayout()); 
    Grid f = new Grid(25,25,400,400); 
    y.add(f, BorderLayout.CENTER); 
    y.setSize(450,450); 
    y.setVisible(true); 
    y.setDefaultCloseOperation(y.EXIT_ON_CLOSE); 

    } 
    public void paint(Graphics g) { 
     int k,j,z=0; 
     width = getSize().width; 
     height = getSize().height; 

     double htOfRow = height/(rows); 
     for (k = 0; k < rows; k++) 
      for(j=0; j< rows+1; j++){ 
      if(j!=3){ 
      g.drawLine(z, (int) (k * htOfRow) , (int) (j*(width/rows)) , (int) (k * htOfRow)); 
      z=(int)(j*(width/rows)); 
      }} 
     double wdOfRow = width/(cols); 
     for (k = 0; k < cols; k++) 
      for(j=0; j< cols+1; j++){ 
      if(j!=3){ 
      g.drawLine((int) (k*wdOfRow) , z,(int) (k*wdOfRow) , (int) (j*(height/cols))); 
      z=(int)(j*(height/cols));}} 
     } 
} 

class Cell{} 
+0

您已註釋掉的代碼似乎以您的問題中的第一個鏈接相同的方式繪製網格。我不確定我明白你在問什麼。 – assylias 2012-04-08 22:54:13

+0

@assylias - 編輯的問題和代碼 – 2012-04-08 22:56:49

回答

1

您的繪圖循環中有一些邏輯錯誤。我認爲這應該工作:

import java.awt.*; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.Graphics; 
import javax.swing.*; 

public class Grid extends Canvas { 

    Cell[][] maze; 
    int rows; 
    int cols; 
    int pathSize; 
    double width, height; 

    public Grid(int rows, int cols, int h, int w) { 
     this.rows = rows; 
     this.cols = cols; 
     maze = new Cell[rows][cols]; 
     setPreferredSize(new Dimension(h, w)); 
    } 

    public static void main(String[] args) { 
     JFrame y = new JFrame(); 
     y.setLayout(new BorderLayout()); 
     Grid f = new Grid(40, 25, 400, 400); 
     y.add(f, BorderLayout.CENTER); 
     y.setSize(450, 450); 
     y.setVisible(true); 

    } 

    public void paint(Graphics g) { 
     int k, j, z = 0; 
     width = getSize().width; 
     height = getSize().height; 

     double htOfRow = height/(rows); 
     double wdOfRow = width/(cols); 

     for (j = 0; j < rows; j++) { 
      for (k = 0; k < cols; k++) { 
       g.drawLine((int) (k * wdOfRow), (int) (j * htOfRow), (int) (k * wdOfRow), (int) ((j+1) * htOfRow)); 
      } 
     } 
     for (j = 0; j < rows; j++) { 
      for (k = 0; k < cols; k++) { 
       g.drawLine((int) (k * wdOfRow), (int) (j * htOfRow), (int) ((k+1) * wdOfRow), (int) (j * htOfRow)); 
      } 
     } 
    } 

    class Cell { 
    } 
} 
+0

嘗試此代碼與if(k!= 3 || j!= 3)爲我的新問題,它的工作。非常感謝你。我看到你改變了我傳遞給drawLine()的參數。所以起點是(0,0)然後是(0,1)?所以現在我明白了。 – 2012-04-08 23:09:48

+0

當網格大小不一樣時,你的代碼似乎無法工作:D – 2012-04-09 01:40:55

+0

@Dan Joseph Porcioncula你是對的,我的'j'和'k'指數被翻轉了。編輯答案來修復它。 – ulmangt 2012-04-09 04:13:51