Как я могу изменить свой JTextField одним нажатием кнопки

Мой txtDisplay выдает ошибку и говорит, что не может ссылаться на неконечную переменную txtDisplay внутри внутреннего класса, определенного в другом методе. Если я реализую ActionListner и поставлю свой actionPerformed позже, он все равно не сработает. На данный момент я просто хочу щелкнуть свой JButton и установить текст в моем JTextField. Я продолжаю получать ошибки, просто пытаясь опубликовать этот вопрос. Я также пытаюсь выяснить, как правильно задавать вопрос, чтобы получить ответ, никого не раздражая. Спасибо

import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ALTest 
{
    public ALTest()
    {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JButton button = new JButton("Btn");
    JTextField txtDisplay = new JTextField("Here's your text field");   
            button.addActionListener (new ActionListener () 
            {
                public void actionPerformed(ActionEvent click)
                {
                    txtDisplay.setText("test");             
                }
            });
    panel.add(txtDisplay);
    frame.add(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,400);
    frame.setVisible(true);         
    panel.add(button);


    }

    public static void main (String[] args)
    { 
        new ALTest();
        }   
    }

person TobyWan    schedule 27.06.2015    source источник


Ответы (1)


import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class ALTest 
{
    JTextField txtDisplay;
    public ALTest()
    {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JButton button = new JButton("Btn");
    txtDisplay = new JTextField("Here's your text field");   
            button.addActionListener (new ActionListener () 
            {
                public void actionPerformed(ActionEvent click)
                {
                    txtDisplay.setText("test");             
                }
            });
    panel.add(txtDisplay);
    frame.add(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,400);
    frame.setVisible(true);         
    panel.add(button);


    }

    public static void main (String[] args)
    { 
        new ALTest();
        }   
    }

Это работает.

person Avanish Kumar    schedule 29.06.2015
comment
Мой код по-прежнему выдает ошибки. Ваш код работает. Насколько я могу судить, все, что вам нужно было сделать, это поместить JTextField в класс, тогда как у меня был JTextField в конструкторе. Можете ли вы сказать мне, почему это работает? .Спасибо. - person TobyWan; 03.07.2015
comment
поскольку класс ActionListener работает с переменной класса, пожалуйста, примите этот ответ. - person Avanish Kumar; 04.07.2015