2011-07-30 2 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 ... 
         ... 
       } }); 
    } 
}