Я новичок в Java, отсюда этот основной вопрос.Невозможно получить доступ к jlabel через программу
У меня возникли проблемы с доступом к полю (jlabel в этом случае) во всей программе. Мой код выглядит следующим образом:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class accessvariable {
public static void main(String[] args) {
//basic setup of display frame
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
JPanel panel=new JPanel();
//text field to take user input
JTextField txt= new JTextField(10);
//adding action listener for text field
txt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (true) { //if condition not checking anything here, just to make it enter the loop
JLabel j =new JLabel("Access successful"); //a jlabel created inside this
System.out.println("inside j : "+j.getText()); //statement to check whether jlabel is accessible from here
}
}
});
System.out.println("outside j : "+j.getText()); //statement to check whether jlabel is accessible from here
//basic setup for final display
panel.add(txt);
frame.getContentPane().add(panel);
frame.setVisible(true);
}
}
Ошибка в этой строке:
System.out.println("outside j : "+j.getText());
Если я закомментировать эту строку, он отлично работает. Внутренний j отображается правильно. Но если я не комментирую его, я получаю эту ошибку:
Exception in thread "Exception in thread "main" java.lang.Error: Unresolved compilation problem: j cannot be resolved"
Чтобы исправить это, я сделал J переменной экземпляра следующим образом:
private JLabel j;
Однако выше генерирует новый ошибка:
Cannot make a static reference to the non-static field j
Я понимаю, что проблема с этим одной строкой:
System.out.println("outside j : "+j.getText());
Как я могу исправить вышеуказанную проблему, так что, если он работает правильно, то выход, когда я ввожу текст в текстовом поле должно быть следующим:
inside j : Access successful
outside j : Access successful
спасибо Судно на воздушной подушке Full Of Угри для хороших предложений. Я новичок в Java и только начинаю изучать весь этот материал ООП. Кстати, это также мой первый вопрос о Stackoverflow. Спасибо за ваш ответ. Я понял, где я ошибся, и ваш ответ был очень полезным –