Как изменить текст в текстовом поле из внутреннего класса? - PullRequest
0 голосов
/ 30 июля 2011

Я хотел изменить текст в JTextField, используя actionlistener на кнопке. существует группа радиокнопок, и Sort.SWITCH меняет свое значение в соответствии с выбранной радиокнопкой.

Таким образом, при нажатии кнопки сортировки текст в поле «Вывод» должен измениться с «Вывод» на «Некоторый текст» .. но ошибка в том, что поле Output не доступно из внутреннего класса. Пожалуйста, скажите мне, как это сделать. спасибо ..

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;

 class Sort extends JFrame
 {
     ...
 }
 class q2 extends Sort
 {
     public static void main(String[] args)
     {
             ...
             JTextField Output = new JTextField(50);
             Output.setText("Output");
             ResultPanel.add(Output);
             SortButton.addActionListener(new ActionListener() {

                 public void actionPerformed(ActionEvent a)
                 {
                       if (Sort.SWITCH == 1)
                       {
                          Output.setText("Some Text");
                       }
                       else if ...
                       ...
                 } });
            }}

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Определите Output как поле класса:

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;

 class Sort extends JFrame
 {
     ...
 }
 class q2 extends Sort
 {
     public JTextField Output;
     public static void main(String[] args)
     {
             ...
             Output = new JTextField(50);
             Output.setText("Output");
             ResultPanel.add(Output);
             SortButton.addActionListener(new ActionListener() {

                 public void actionPerformed(ActionEvent a)
                 {
                       if (Sort.SWITCH == 1)
                       {
                          Output.setText("Some Text");
                       }
                       else if ...
                       ...
                 } });
     }
 }
2 голосов
/ 30 июля 2011

Чтобы получить доступ к вашей переменной из анонимного класса, определите переменную как поле (вместо локальной переменной) или как final:

public static void main(String[] args){
    //...
    final JTextField Output = new JTextField(50);

Анонимные внутренние классы могут иметь доступ только к полямили final переменные из определяющего класса.

...