2012-04-09 7 views
3

私は私のUIカント設定値

public class MyFrame extends JFrame{ 
    JTextArea textArea; 
    public MyFrame(){ 
    setSize(100,100); 
    textArea = new JTextArea(50,50); 
    Container content = getContentPane(); 
    content.add(textArea); 
    } 
public static void main(String[] args){ 
      JFrame frame = new MyFrame(); 
      frame.show(); 
      UpdateText u = new UpdateText(); 
      u.settext("Helloworld"); 
     } 
} 

ため、このクラスを持っていると私はtextAreaのテキストを設定します。この他のクラスを持っているが、ウィッヒに私は別のににtextAreaをアクセスもするMyFrameと拡張しましたクラス。

public class UpdateText extends MyFrame{ 
    public void settext(String msg){ 
    textArea.setText(msg); 
    } 
} 

次に、UpdateTextをインスタンス化し、settext関数を呼び出します。テキストはGUIではうまくいきません。 助けてください

+0

TextAreaはどのようにUpdateTextクラスに渡されますか?あなたはそれらが同じtextAreaインスタンスであると確信していますか? – evanwong

+0

が私のために働いています... – ControlAltDel

+0

@evanwong UpdateTextはMyFrameを拡張して、textArea –

答えて

2

まず、異なる動作をしない限り、setText()メソッドをオーバーライドしないでください。第二に、何も拡張する必要はありません。あなたがしなければならないのは、これらの簡単な手順に従うだけです。 「MyFrame`クラスで

MyFrame gui; 

public UpdateText(MyFrame in) { 
    gui = in; 
} 
  • を先頭に、このラインを置く:UpdateTextクラスで

    1. 、それのどこかにこれらの行を入れて

      UpdateText ut = new UpdateText(this); 
      

    今度は、UpdateTextクラスのMyFrameクラスのすべてをpで参照できますguiで変更したいものを止めてください。たとえば、テキストエリアのテキストを変更したいとします。コードは次のようになります。

    gui.textArea.setText("Works!"); 
    

    ハッピーコーディング! :)