我创建了一个创建按钮的循环,在之后的循环中,我编写的任何代码都会得到相同的错误"无法访问的代码"现在我无法对这些按钮进行任何其他更改。有没有办法在那之后添加代码或者它只是不可能?
我也不理解这个问题。主要是我在Action侦听器中调用了st。我希望每次点击一个cetain按钮时st减少1,但它似乎对每个按钮都有效。我做了它所以每次按下另一个按钮来测试它时它会在按钮上写出来,并且它从第一个按钮到最后一个按钮只是按1。 (我希望我有任何意义)
这是我的代码, 主要课程:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Start {
public static int a;
public static JButton [][] gumbi = new JButton[15][15];
public static void main(String[] args){
JFrame okno = new JFrame("Nonogram");
okno.setVisible(true);
okno.setSize(700, 700);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
okno.add(panel);
JPanel polje = new JPanel(new GridLayout(15, 15));
panel.add(polje, BorderLayout.CENTER);
a = 0;
for(int i = 0; 0 < 15; i++){
for(int j = 0; j < 15; j++){
if(i < 5 && j < 5){
gumbi[i][j] = new JButton();
gumbi[i][j].setBackground(Color.GREEN);
//gumbi[i][j].addActionListener(new Listener(gumbi));
polje.add(gumbi[i][j]);
}else if(i < 5 || j < 5){
gumbi[i][j] = new JButton();
gumbi[i][j].setBackground(Color.YELLOW);
//gumbi[i][j].addActionListener(new Listener(gumbi));
polje.add(gumbi[i][j]);
gumbi[i][j].setEnabled(false);
}else{
if(Math.random() <= 0.6){
gumbi[i][j] = new JButton();
gumbi[i][j].setBackground(Color.WHITE);
gumbi[i][j].addActionListener(new Listener(gumbi));
gumbi[i][j].setText("3");
polje.add(gumbi[i][j]);
}else {
gumbi[i][j] = new JButton();
gumbi[i][j].setBackground(Color.WHITE);
gumbi[i][j].addActionListener(new Listener(gumbi));
gumbi[i][j].setText("4");
polje.add(gumbi[i][j]);
}
}
if(gumbi[i][j].getText() == "3"){
a += 1;
}
if(i == 14 && j == 14){
gumbi[i][j].setText("" + a);
}
}
}
//unreachable code
}
}
动作侦听器类:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class Listener implements ActionListener {
JButton[][] gumbi = Start.gumbi;
final int number = Start.a;
public Listener(JButton[][] gumbi) {
this.gumbi = gumbi;
}
public void actionPerformed(ActionEvent e){
JButton gumb = (JButton) e.getSource();
int st = number;
if( gumb.getBackground() == Color.WHITE){
gumb.setBackground(Color.BLACK);
} else if (gumb.getBackground() == Color.BLACK){
gumb.setBackground(Color.WHITE);
}
if( gumb.getBackground() == Color.WHITE && gumb.getText() == "3"){
st -= 1;
} else if (gumb.getBackground() == Color.BLACK && gumb.getText() == "3"){
st += 1;
gumbi[0][0].setText("" + st);
}
}
}
答案 0 :(得分:2)
For循环语法
for ( {initialization}; {exit condition}; {incrementor} ) {
}
初始化 - 初始化变量
退出条件 - 指定循环将退出的条件
incrementor - 变量的增量值
在您的代码中,您在编写退出条件时犯了错误,您应该使用variable name < value
。您需要将0
替换为i
,即您的变量名称。
for(int i = 0; 0 < 15; i++){
for(int j = 0; j < 15; j++){
}
}