java でAWTなどを利用してGUIプログラムを組んでいます。初心者です。


サイトに自分が作っているソースをアップしました。
<a href="http://gads.kagebo-shi.com/hatena/">http://gads.kagebo-shi.com/hatena/</a>

この中で、あるボタンに機能をもたせる部分で、
// ボタンに機能をつける
button1.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent ae ){
// キーワード数を取得
text1 = l2.getText();

// しばり数を取得
shibari1 = l2_5.getText();
}
});

という部分があります。表示はきちんと想定通りになりうまく行ったのですが、
取得した2つの数値がうまく元のクラスに戻せません。(text1、shibari1)

javaでは戻り値は一つというのを聞きました。

ということは、ここで取得した2つの変数はどうやって元のクラスに戻してやればいいのでしょうか?

さらに、shibari1 = l2_5.getText();の下にreturn;を書いてもうまく戻ってくれません。

このFrameは、ボタンを押した時点で役目が終わり、変数を元のメインクラスに戻してやりたいのです。

説明がうまくできずにすいませんが、よろしくお願いします。

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/04/24 11:39:14
  • 終了:2007/05/01 11:40:03

回答(1件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/04/24 13:51:15

ポイント60pt

 呼び出し元がどうなっているかによりますが・・・

 呼び出し元がstaticなら、呼び出し元にstaticメンバを作ってMyApp.setText1(text1);等のようにして設定する(呼び出し元のクラス名=MyApp)

 非staticなら、public void MyFrame( String Fram_Title, MyApp app )の様にして、呼び出し時にはMyFrame(タイトル, this)の様にして、呼び出しもとへのリファレンスを渡しておいて、app.setText1(text1);の様にして設定する等。

 あとは、値戻し用のオブジェクトを作って、returnする等、方法は色々あります。

http://q.hatena.ne.jp/

id:zachouR

ありがとうございます!

呼び出しはわかりました!m(__)m

2007/04/24 21:08:23
  • id:sato_hyper
    どこかでGamen01クラスを作成してると思うのですが、

    String textUketori;
    String shibariUketori;
    Gamen01 hensu = new Gamen01();

    textUketori = hensu.text1;
    shibariUketori = hensu.shibari1;

    こんな感じでGamen01のインスタンスにアクセスしても値が取れないって事でいいですか?
  • id:zachouR
    この全体のプログラムで作っているファイルは、

    ◆main_kun.java
    コレには、public static void main(String[] args) {}が入っています。

    ◆step.java
    コレには、
    public class step {
    public void step1(){
    // 画面1
    Gamen01 f1 = new Gamen01();
    f1.MyFrame("ソフトタイトル");
    }
    }
    などをいれて、Gamen01を読み込んでいます。

    ここのstep.java上で、入力したtext1、shibari1を受け取り、
    それらを加工して表示するGamen02.javaに飛ばしたいのです。

    しかし、いろいろと問題が出てきました。

    このstep.javaで、次の画面を呼び出す部分(Gamen02)を書くと、

    Gamen02 f2 = new Gamen02();
    f2.MyFrame("ソフトタイトル2番");

    Gamen01とGamen02が同時に開いてしまうのです。

    Gamen01は、テキストと数値を入力してOKボタンを押したら、
    もう用済みで、次に必要なのはGamen02なのです。

    たぶん、これがjavaなんだろうなぁ、とおもいつつ
    順を追って作る事が出来ません。
    (Gamen02の表示はGamen01が終わるまで止める。)

    難しいです。
  • id:sato_hyper
    Gamen01とGamen02が同時に開いてしまう件は
    JFrameの代わりにJDialogを使う事で解決しませんか?

    機能的にJFrameとそんなに違わないので大丈夫だと思います。
  • id:zachouR
    現在、書いてあるソースをそのまま、JFrameを
    そのまま、JDialogに置き換えても大丈夫でしょうか?

    パネルとかを載せることはできますか?
  • id:lunlumo
     ウィザードやコマンドラインアプリケーションの様に順に流したいのであれば,カードレイアウトを使うのがしっくり来るかもしれません。

    http://www.javadrive.jp/tutorial/cardlayout/index.html

     上から下に順番に流して必要に応じてユーザの反応を待つ,といった発想を捨てた方がより良いかとは思いますが...。
  • id:sato_hyper
    現状のソースならば一部の変更でJDialogを利用できます。
    パネルもそのままのります。

    1.クラス名の変更
    2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );の削除
    3.setModalの追加
    4.Disposeの追加
  • id:zachouR
    lunlumo さん、
    ありがとうございます。
    自分がBASICの頃の癖というか、抜け切れていません。
    順を追っていく、という発送しかできなくなっているというか。
    もし、lunlumo さんなら、どういう感じで組んでいかれるのでしょうか?よかったら教えて下さい。

    sato_hyper さん、
    さっそく、JDialogに変えてみることにしました。
    ありがとうございます。


    ところで、コメントだと、はてなはポイントを送信してくれないのでしょうか?
    lunlumo さん、sato_hyper さん、少しですが送信致します。
  • id:sato_hyper
    ポイント送信ありがとうございます。
    ただ、コメントを利用してる場合はポイント取得を放棄してると考えて頂いて問題ないですよ^^

    あと、試して駄目だった事をコメントに書いておくと、そのコメントから新たなレスが期待できますよ♪

  • id:lunlumo
    必要な処理をピックアップして(ここまでは同じ),ユーザのアクションに応じてそれぞれの処理を実行する様な形ですかね。例えば,設定処理,データ入力処理,データ加工処理を作成して,メニューなりボタンなりの選択時にそれぞれの処理を実行する様なイメージです。この辺りは,元のデータの受け渡しの点も含めて,MVCをキーワードに調べられると良いのではないかと思います。

    http://java.sun.com/developer/technicalArticles/javase/mvc/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません