Это потому, что вы обращаетесь к переменной, которая находится в другой и ограниченной области. В вашем случае ваш nbr
определен в вашей функции Main()
и ограничен только этой областью. Если вы хотите получить к нему доступ, вы должны сделать его глобальным, значит, вы должны объявить его в своем классе.
Пример:
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame implements ActionListener{
int x = 0;
private JLabel nbr; // declare a global variable
public static void main(String[] args) {
new Main().setVisible(true);
}
public Main(){
super("Test");
nbr = new JLabel(); // initialize here...
setSize(640, 480);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLayout(new FlowLayout());
JButton button1 = new JButton("Button1");
button1.addActionListener(this);
add(button1);
nbr.setText(x); // set text to that variable here...
add(nbr);
}
public void actionPerformed(ActionEvent e){
x++;
nbr.setText(x);
}
}
Ps : Проверьте на наличие любых синтаксических ошибок, я написал это без тестирования. :)