Java棋盘格,奇数/偶数%2面板

时间:2016-03-08 21:57:17

标签: java

我已经成功地使用彩色面板将棋盘放在一起,但仅当用户输入行和列的奇数时。否则,当输入偶数时,它只显示交替的彩色列。我正在努力弄清楚如何编写一个短片段,通过使用%2 = 0 来检查它是否有奇怪,甚至更改了颜色。以下是我的代码。谢谢,让我轻松一点,我对编程很新! : - )

另外,我已经创建了一个单独的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);
}
}

2 个答案:

答案 0 :(得分:1)

将您的循环更改为:

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;
        }

        ...

    }
}

答案 1 :(得分:0)

就像我说的,我是编程新手,但我真的很享受学习经历。我希望这有助于其他人的学习经历。

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

ColorPanel panel = new ColorPanel(BoxColor); 

+ ColorPanel类 ...

我说:

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

在主程序中删除了附加的ColorPanel类。

对于冗余而言,很抱歉,只是想清楚地解释一下。

另外,多亏杰森,他真的帮助我弄清楚使用这两个

的想法
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);
}
}
}