这个我想简单的可以这样吧:
首先 构造一个A类实例
A a = new A();
A类里面有一个设置引用B类的方法,比如setBref( B b ){}
然后再B类的构造函数里面把A的引用传递过去
B b = new B( a );
然后把这个B类的引用传递给A
a.setBref( b );
这样a和b就都能看到对方了,那么你在任何一个里面都能调用对方的public
方法了这样如何?
首先 构造一个A类实例
A a = new A();
A类里面有一个设置引用B类的方法,比如setBref( B b ){}
然后再B类的构造函数里面把A的引用传递过去
B b = new B( a );
然后把这个B类的引用传递给A
a.setBref( b );
这样a和b就都能看到对方了,那么你在任何一个里面都能调用对方的public
方法了这样如何?
解决方案 »
- 关于swing 程序 打包发布 可以有windows linux下运行的软件
- 布局管理器的问题
- 菜鸟请教:关于Java作图!!!
- 文件存取问题
- 可以 把多个 jtextfield 的内容储存到 一个 arraylist 里面吗 。。
- multipart/form-data上传方式,提交数据的问题。
- 问一个比较恶心的问题,关于16进制文本转换成二进制文件
- 请问:如何设置JLabel和JButton上的字体,大小和颜色?谢谢(在线等待!)
- 轻松拿到100分
- 紧急求助!在线等待!
- import javax.swing.*但是在编译的时候javax.swing.JMenuItem 和javax.swing.JButton not found??
- 看看这个程序的执行结果是什么?
A类实现Observer接口,B类继承Observable类就行了。
就象下面这样:A.java
public class A {
B b = null;
public A(B b) {
this.b = b;
b.addObserver(this);
} public void update(Observable ob, Object obj) {
b.method();//自动调用B要完成的动作
}
}
B.java
public class B extends Observable {
public void action() {//B的动作
.......
notifyObservers();//通知A
}
}
B做动作,应该是B监听A的行为。
实现如下:
package com.test.csdn.others.a;
import com.test.csdn.others.b.B;
public class A extends java.util.Observable
{
public A()
{
}
public void sendMsg()
{
System.out.println("sending message in A!!!");
}
public void receiveMsg()
{
System.out.println("receiving message in A!!!");
this.setChanged();
this.notifyObservers();
}
public static void main(String[] args) throws Exception
{
A a = new A();
a.addObserver(new B()); for(int i=0;i<10;i++)
{
int t =0;
while( (t=System.in.read())>=0)
{
if (t == 'r')
{
a.receiveMsg();
}
else
System.out.println("waiting for receiving letter r!");
} }
}
}
package com.test.csdn.others.b;
import com.test.csdn.others.a.A;
public class B implements java.util.Observer
{
public void update(java.util.Observable o,Object arg)
{
System.out.println("do action in B");
((A) o).sendMsg();
}
}
直接运行A.java,之后会提示你输入文字。如果你在键盘随便输入的一行文字内含有小写英文字母r,则,程序A认为受到了消息。之后,B监听到了消息并打印“do action in B”,然后调用A的sendMsg(),模拟发送消息。如果你输入的一行文字内不含字母r,表示没发消息。A也不会发消息,会继续提示你输入。上述循环会执行10次。以便模拟接收消息的模型。
如果你要A能够监听B,B也能够监听A,那么必须
两边都加上同时成为Observer和observable
A.setBref(B);
B.setRef(A);
你说:"但程序写错了。B做动作,应该是B监听A的行为。"??楼主的要求:“若B有动作后,调用A类发送一个消息”,
如果A不监听B的话,A能知道B什么时候有动作吗?(当然是就我的方法来说的,其他的实现先不考虑)
你只是看到了楼主后面的一句:“若A收到一个消息,自动调用B完成一个动作”才认为应该B监听A的行为。
当然可能我考虑的有些复杂,也不够周全,但程序思路是没问题的!
也可:)SORRY:)