以下代码段来自生成5乘5的JButtons网格的系统。我需要迭代ArrayList
JButtons
并将JButton
的行和列传递到ButtonListener
的构造函数中。代码当前显示在下面的方式有效,但我想知道我是否可以清理代码或以任何方式重新考虑。我似乎有很多关于尝试构建网格的指令。
int row = 1, col = 1;
for (JButton curButton : view.getButtons()) {
curButton.addActionListener(new ButtonListener(row, col));
row++;
if (row > 5) {
row = 1;
col++;
}
}
有什么方法可以提高质量或简化上面的代码段吗?
答案 0 :(得分:4)
int iterator = 0;
for (JButton curButton : view.getButtons()) {
curButton.addActionListener(new ButtonListener(iterator%5 + 1, iterator/5 + 1));
iterator++;
}
请注意,我使用整数除法,它总是向下舍入。 iterator/5 + 1
会将{0,1,2,3,4,5,6,...}映射到{1,1,1,1,1,2,2 ...}
答案 1 :(得分:0)
你能不能:
col = row = 5;
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
curButton.addActionListener(new ButtonListener(i, j));
}
}
可能必须使col和第6行或使i和j从不同的数字开始。