无法访问的代码,在不同类中使用变量

时间:2014-12-28 17:38:40

标签: java

我创建了一个创建按钮的循环,在之后的循环中,我编写的任何代码都会得到相同的错误"无法访问的代码"现在我无法对这些按钮进行任何其他更改。有没有办法在那之后添加代码或者它只是不可能?

我也不理解这个问题。主要是我在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);
    }
}


}

1 个答案:

答案 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++){
   }
}