2016-03-08 126 views
2

我已经成功地使用彩色面板将棋盘放在一起,但只有当用户输入行和列的奇数时。否则,当输入偶数时,它只会显示交替的彩色列。我正在努力想出如何编写一个短片段来检查是否奇怪,甚至通过使用颜色甚至改变颜色的结果。以下是我的代码。谢谢,让我轻松我对编程非常陌生! :-)Java棋盘,奇数/偶数%2面板

此外,我创建了一个单独的ColorPanel类来构建彩色面板,然后拉入到我的主程序中。我没有打扰下面的代码。

import javax.swing.*; 
import java.awt.*; 

public class Checkerboard extends JPanel{ 

public static void main(String[] args) { 
    JFrame chBoard = new JFrame(); 
    chBoard.setTitle("Checkerboard"); 
    chBoard.setSize(800,800); 
    chBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    String inputStr = JOptionPane.showInputDialog("Number of rows", "5"); 
    if (inputStr == null) return; 
    int row = Integer.parseInt(inputStr); 

    inputStr = JOptionPane.showInputDialog("Number of columns", "5"); 
    if (inputStr == null) return; 
    int col = Integer.parseInt(inputStr); 

    Container pane = chBoard.getContentPane(); 
    pane.setLayout(new GridLayout(row, col)); 

    Color BoxColor = Color.red; 

    for (int counter = 1; counter <= row * col; counter++) 
     { 
     if (BoxColor == Color.red) 
      BoxColor = Color.black; 
     else 
      BoxColor = Color.red; 

     ColorPanel panel = new ColorPanel(BoxColor); 
     pane.add(panel); 
     } 

    chBoard.setVisible(true); 
} 
} 

回答

0

你的循环更改为:

for (int x = 0; x < row; x++) { 
    for(int y = 0; y < col; y++) { 
     if((x + y)%2 == 0) { 
      BoxColor = Color.red; 
     } else { 
      BoxColor = Color.black; 
     } 

     ... 

    } 
} 
+0

非常感谢你这是有道理的 – izzyfanto

0

就像我说的,我是新来编程,但是我真的很喜欢学习经验。我希望这可以帮助其他人学习经验。

无论如何,我想我用独立的ColorPanel类为自己创造了更多的工作。因此,我不是创建一个单独的ColorPanel类来构建彩色面板,而是将其更改为使用预先存在的JPanel类在主程序内创建面板。因此,而不是:

ColorPanel panel = new ColorPanel(BoxColor); 

+的颜色面板类 ...

我把:

JPanel panel = new JPanel(); 
panel.setBackground(BoxColor); 

主程序中,并删除了额外的颜色面板类。

对不起,我只是想解释清楚。

此外,由于贾森,他真的帮我找出使用两个

int x & y 

计数

row & col 

,然后把它们相加,这使我用

的想法
%2=0 

找出我是在奇数还是偶数小组。

希望这可以帮助别人! :-)

最终代码看起来是这样的:

import javax.swing.*; 
import java.awt.*; 

public class Checkerboard extends JPanel{ 

public static void main(String[] args) { 
    JFrame chBoard = new JFrame(); 
    chBoard.setTitle("Checkerboard"); 
    chBoard.setSize(800,800); 
    chBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    String inputStr = JOptionPane.showInputDialog("Number of rows", "5"); 
    if (inputStr == null) return; 
    int row = Integer.parseInt(inputStr); 

    inputStr = JOptionPane.showInputDialog("Number of columns", "5"); 
    if (inputStr == null) return; 
    int col = Integer.parseInt(inputStr); 

    Container pane = chBoard.getContentPane(); 
    pane.setLayout(new GridLayout(row, col)); 

    Color BoxColor = Color.red; 

    for (int x = 0; x < row; x++) { 
     for(int y = 0; y < col; y++) { 
      if((x + y)%2 == 0) { 
       BoxColor = Color.red;} 
      else{ 
      BoxColor = Color.black;} 

     JPanel panel = new JPanel(); 
     panel.setBackground(BoxColor); 

     pane.add(panel); 
     } 

    chBoard.setVisible(true); 
} 
} 
}