プロが教える店舗&オフィスのセキュリティ対策術

Java初心者です。
JavaプログラムAからMyFrame frm = MyFramehome();frm.show();で新しい画面を起動しています。プログラムAからfrmへたいしてのいろいろなアクセスはメソッドを作成しておけば可能だと思いますが、frm側からプログラムAへのアクセス(データの受け渡しやメソッドの実行)はできないのでしょうか?

A 回答 (2件)

 フレームを作るときに、自分自身の参照を渡してそれをフレーム側で保管し、


使いたいときにその参照を使って呼び出してやればよいと思います。

import java.awt.*;
import java.awt.event.*;

class MyFrame extends Frame {

private A a;

public MyFrame(A parent) { super("MyFrme");
a = parent;
setSize(320, 240);
a.CloseMessage = new String("My Frame Closing");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) { a.Close(); };
});
};

}

public class A extends Object {

private MyFrame frm;
private static A a;
public String CloseMessage;

public static void main(String args[]) {

a = new A();
a.CreateMyFrame();

};

private void CreateMyFrame() {

frm = new MyFrame(this);
frm.setVisible(true);

};

public void Close() {

System.out.println(CloseMessage);
System.exit(0);

};

}
    • good
    • 0

プログラムAの参照を渡せば可能です。



public class A {
  private String message="A";
  public String getMessage() {
    return message;
  }
  public void createMyFrameHome() {
    MyFrame frm=MyFrameHome(this);
    frm.show();
  }
  public static void main(String[] args) {
    new A().createMyFrameHome();
  }
}

class MyFrameHome extends Frame {
  public MyFrameHome(A a) {
    String message=a.getMessage();
    System.out.println(message);
  }
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!