2011-07-30 16 views
0

ボタンのactionlistenerを使ってJTextFieldのテキストを変更したかったのです。 ラジオボタングループがあり、Sort.SWITCHは選択されたラジオボタンに従ってその値を変更します。テキストフィールドのテキストを内部クラスから変更するにはどうすればいいですか?

ソートボタンを押すと、[出力]フィールドのテキストが[出力]から[一部のテキスト]に変更される必要があります。 ただし、出力フィールドには内部クラスからアクセスできません。 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

、匿名クラスの中から、あなたの変数にアクセスする(代わりに、ローカル変数の)フィールドとして、変数を定義するか、またはfinalようにするには:

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

匿名インナークラスのかもしれませんアクセス・フィールドのみ、または定義クラスからの変数final

+0

オブジェクトが最終 - のJTextFieldへの参照を変更しなくてもよいです。ただし、テキストを格納するオブジェクトの文字列などのメンバ変数は変更される可能性があります。 (これは誰かが書いた以前のコメントに対する応答として書かれたもので、削除されました:() – Freddie

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 ... 
         ... 
       } }); 
    } 
} 
関連する問題