2011-07-30 80 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); 

匿名內部類可只能訪問字段或定義類中的變量。

+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 ... 
         ... 
       } }); 
    } 
} 
相關問題