• ベストアンサー

javaの設計について

javaでGUIプログラムを作っています。 SettingFrameというクラスを作り、JFrameをextendsしてGUI部分をまとめています。 メインクラスからSettingFrameのインスタンスを作りました。 質問は2点あるのですが、 (1)SettingFrameについているJButtonが押されたときメインクラスのメソッドを呼び出したいのですが 方法はありますか? (2)SettingFrameというクラスにGUI部分をまとめた理由はメインクラスに書くとごちゃごちゃ するからですが、こういった理由で別のクラスにまとめるのは妥当でしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.1

SettingFrameクラスにmainクラスの参照を持たせる。 class SettingFrame {  mainclass parent ;  public void setParent(mainclass wParent)  {   parent = wParent ;  }  public onPushJButton( ) {   parent.callback( ) ;  } } class mainclass {  SettingFrame settingFrame = new SettingFrame() ;  settingFrame.setParent(this) ;  public void callback( )  {  } }

javasan
質問者

お礼

有り難うございます。わかりやすかったです。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Javaにおけるイベント処理

    JFrame  SpritPanel   SpritPanel    JPanel     JButton A     JButton B     JButton C    JList A   SpritPanel    JList B    JTable C という構成で、JButton A をクリックしたらJList AにJButton A用のなんらかのリストを表示し、JButton BをクリックしたらJList BにJButton B用のなんらかのリストを表示し、・・・ と1つGUI部品で発生するイベントで1つまたは複数のGUI部品の更新処理を行いたいのですが、イベントリスナをどこに実装させて、どこに更新処理を書くかで迷います。 例えば、押されるJButton Aにイベントリスナーのメソッドを実装し、そこで処理を書く場合はJList Aをこのメソッド内から見えるようにしなけなくて、それをするためにインスタンスを渡したりするのが面倒に感じています。 様々なGUI部品やパネルで構成され、イベントが起きたら複数のGUI部品が更新が必要となるようなGUIアプリケーションを作る場合、どのようにイベントを処理させるのが王道なのでしょうか。 うまく質問できないので、質問内容に不明な点があれば補足いたします。

    • ベストアンサー
    • Java
  • JAVA コンパイル時のエラー

    JAVAの初心者です。 javacでコンパイルする際, gui は abstract でなく、java.awt.event.KeyListener 内の abstract メソッド keyReleased(java.awt.event.KeyEvent) をオーバーライドしません。 public class gui extends JFrame implements ActionListener,KeyListener { このようなエラー文がでます。 このエラー文の意味を教えていただけないでしょうか。 よろしくお願いします。

  • Javaの課題が全くわかりません。

    この前学校からJavaの課題が出まして、全くわかりません。 <テストクラス>(ファイル名:Test.java) <フィールド> なし <メソッド> 1.メインメソッド 「ここからはテストクラスの流れを書きます」 ・アドレスサーチクラスを生成 ・アドレスサーチクラスのInitialize()メソッドを呼ぶ ・アドレスサーチクラスのSearchName()メソッドを呼ぶ ・検索結果を表示する <アドレスサーチクラス>(ファイル名:AddressSearch.java) <フィールド> 1.アドレス配列(3000個分) <メソッド> 2.住所録ファイル入力設定 (メソッド名) public void Initialize() 「ここからはテストクラスの流れを書きます」 ・住所録ファイルから1行目入力 ・1行を各項目に分解 ・アドレスクラスのインスタンスを生成 ・アドレスクラスのインスタンスに分解した各項目を設定 ・アドレス配列にインスタンスを格納 3.氏名検索 (メソッド名) public Address SearchName(String name) 「ここからはテストクラスの流れを書きます」 ・アドレス配列から氏名を探す ・一致した氏名のインスタンスを戻す  一致しない場合、nullを返す 長くなりました。このような条件でプログラムを作るのは私にはあまりわかりませんでした。googleなどで検索してもあまり良い情報がありません。もしこの問題が解ける方がいらっしゃるなら、ぜひアドバイスやプログラムなどを教えてくれたらありがたいです。

  • eclipseについて

    シリアライズ可能クラス English は long 型の static final serialVersionUID フィールドを 宣言していません。 というエラーが消えません。どうすればいいですか? プログラム public class English extends JFrame implements ActionListener{ static JFrame window; Container c=getContentPane(); JButton word=new JButton(); JButton example=new JButton(); JButton list=new JButton(); JButton ret=new JButton(); JButton ret2=new JButton(); // main method_______________________________ public static void main(String[] args) { window = new English(); window.show(); } ついでに メソッド show() は型 Window で使用すべきではありません。 というエラーもでるのですが、解決方法を教えてください。

  • JAVAプログラムの基本的な書き方

    JAVAを始めて数日の者です。 クラス、メソッド、コンストラクタ、インターフェイスなど初心者にはかなりキツイです! どうも理解できません。 プログラムを書くとき、クラス定義したらその度にnew演算子を使うのでしょうか? メソッドとは処理する内容を記述するものなのでしょうか? メインは最後に記述するのでしょうか? 最初に呼び出されるのはメインですか? プログラムを書くとき、頭の中で流れを考えながら英語みたいに組み立てていくのでしょうか? 訳のわからない質問ですが、プログラムを書くときの基本的な注意点を教えてください!

  • Javaのオーバーライドについて教えてください!

    //Sample.java class A extends Fina{ public int part(String str1,String str2){ int iN1 = Integer.parseInt(s1); int iN2 = Integer.parseInt(s2); intNum1 *= intNum2; return intNum1; } } このプログラムに対応するように同じクラス内でオーバーロードした際のプログラムを教えてください。 オーバーロードの内容は、partメソッドをオーバロードして引数にString型のデータを二つ受け取り、2つのString型のデータをそれぞれint型に変換し、それぞれかけた値を別のクラスでメインから呼び出すにはどうすれば良いですか?

    • ベストアンサー
    • Java
  • JAVAの専門用語についての疑問です

    初歩Perl使いですが、JAVAをしないといけなくなったのでJAVAを勉強しています。 JAVAをやり始めて一週間くらいですが、疑問点というか漠然と?が浮かんだので質問します。 クラス メソッド インスタンス アクティビティ オーバーライド など様々な言葉が出てきますが、クラスやメソッドなど、JAVAに詳しい人数人に聞いても 「ガチッ」とした言葉が帰ってきません。サイトをたくさんみても、なんとゆーか漠然とした哲学っぽい事が書いてあって、自分の中で シャキーン! と理解ができなくてこまっています。 「おそらく こんな感じなんだろーなー」と漠然と分かる感じですが、JAVAの概念?のようなものが脳にほのかに漂う感じでソース組んでて精神的に非常に気持ち悪いです。 JAVAとは そういうものなんでしょうか? 1から10まで、しかっと把握するぜ!このプログラムは俺が動かしてるんだぜ! という考えはやめたほうがいいのでしょうか? JAVA使いの人を見ると漠然と漂う感じで組んであるみたいで、なんだか心がイーッとなってしまうのです、どなたかお助けください。

    • ベストアンサー
    • Java
  • java ME MIDPにおいて

    java ME MIDPにおいて Canvasクラスの public void paint(Graphics g){ g.setColor(255,255,255);} で、メインのMIDletクラスが 起動すると自動でpaintが呼ばれる仕組みが理解できません。 また、paintの引数のGraphicsクラスは String.voluOf();のStringクラスの様にインスタンス化せずに使っているクラスですか? さらに、setColoor();もstaticメソッドではないのになぜ使えるのでしょうか? 以上三点、 どういう振る舞いをしているのでしょうか?

    • ベストアンサー
    • Java
  • javaで

    フォルダに AA.java, BB.java, CC.java, ‥という不特定多数のクラスがあって メソッドString name()を3つとも実装しているとします。 そのメソッドを呼ぶと、クラスの名前AAやBBが返戻地として返されるとします。いまこのフォルダにあるすべてのクラスの、このメソッドを よぶとします。クラスの数はいくつあるのかはわかりません。このメソッドをよんですべてのクラスの名前を取得するようにしたいです。 このようなプログラムをつくるにはどうすればいいのでしょうか?

  • java のメソッドの使い方について

    現在のjavaの勉強しております。 そこでフィールドについてどうしてもわからないことがあったので質問させていただきます。 他クラスのメソッドを利用したい時、通常インスタンス化を行いますが、下記のようにフィールドに宣言しても、他クラスのメソッドを利用できることに疑問を感じました。 public class Test{ public String show(){     ~~   return null; } } //Testクラスのshowメソッドを呼び出します public class Test2{ private Test test_; public String triaezu(){    String str = test_.show(); ~~   … このようにフィールドにもつ呼び出しとインスタンス化をして呼び出す方式とは一体何が違うのでしょうか? プログラムの先輩方、基礎的なことすぎて申し訳ないのですが、どうかご教授ください。

    • ベストアンサー
    • Java