我已经成功地使用彩色面板将棋盘放在一起,但仅当用户输入行和列的奇数时。否则,当输入偶数时,它只显示交替的彩色列。我正在努力弄清楚如何编写一个短片段,通过使用%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);
}
}
答案 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);
}
}
}