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 に表示されないようです。

4

1 に答える 1

2

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

  1. クラスのUpdateTextどこかに次の行を挿入します。

    MyFrame gui;
    
    public UpdateText(MyFrame in) {
        gui = in;
    }
    
  2. 「MyFrame」クラスで、次の行を先頭に置きます。

    UpdateText ut = new UpdateText(this);
    

これで、変更したいものの前に を付けることで、MyFrameクラスからクラス内のすべてを参照できます。たとえば、テキストエリアのテキストを変更したいとします。コードは次のようになります。UpdateTextgui

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

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

于 2012-04-09T18:05:26.207 に答える