如何在内部类中更改文本字段中的文本?

时间:2011-07-30 19:55:35

标签: java jtextfield

我想通过在按钮上使用actionlistener来更改JTextField中的文本。 有一个radiobutton组,Sort.SWITCH根据所选的radiobutton改变其值。

因此,当按下排序按钮时,输出字段中的文本必须从“输出”更改为“某些文本”。 但错误是无法从内部类访问输出字段。 Plz告诉我正确的方法。感谢..

 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 个答案:

答案 0 :(得分:2)

要从匿名类内部访问变量,请将变量定义为字段(而不是局部变量),或定义为final

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

匿名内部类只能访问定义类中的字段或final变量。

答案 1 :(得分:2)

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 ...
                       ...
                 } });
     }
 }