2015-04-20 3 views
0

У меня есть (в основном) следующий кодПопытки ссылаться на текст из JTextField при нажатии на JButton

JTextField input = new JTextField(20); 
JButton calculate = new JButton("calculate"); 
calculate.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent event){ 
     String test = new String(input.getText()); 

     } 
}); 

и в основном моя цель состоит в том, чтобы сделать что-то с текстом от текстового поля «ввода», когда кнопка щелчок. Однако я получаю

«не может относиться к неконечному локальному переменному вводу, определенный в области видимости»

Как получить доступ к тексту «вход», когда кнопка нажата, без этой ошибки?

+0

Попросите свой класс реализовать ActionListener и установите значение calculate.addActionListener (this); вместо. – Stultuske

+0

'JTextField input = new JTextField (20); JButton calculate = new JButton (" calculate ");' это код внутри любого метода.? – Saif

ответ

3

Вы можете отметить input поле final, например

final JTextField input = new JTextField(20); 
JButton calculate = new JButton("calculate"); 
calculate.addActionListener(new ActionListener(){ 
    String test = input.getText(); 
}); 

Но я бы предпочел, чтобы сделать поле полем экземпляра, но это я. См. Understanding Class Memembers для получения более подробной информации.

2

Я думаю, ваше объявление поля внутри какого-либо метода.

Сделайте это объявление в классе. Не в любом методе, как конструктор или другие.

Объявить их как класс собственности, как как:

JTextField input; 
JButton calculate; 

затем инициализировать их, где вы хотите

input = new JTextField(20); 
calculate = new JButton("calculate"); 

Если вы хотите сохранить что JTextField input в качестве локальной переменной, то вы должны сделать это чтобы получить доступ от ActionListener.