关于java事件处理机制的一些问题

1、一个组件是自己产生事件给监听器,还是组建将接受到的事件再传递给接听器。我想问的就是事件到底是由谁产生的。2、监听器接受到事件后,如何选择要执行的方法。据我所知,监听器... 1、一个组件是自己产生事件给监听器,还是组建将接受到的事件再传递给接听器。我想问的就是事件到底是由谁产生的。
2、监听器接受到事件后,如何选择要执行的方法。据我所知,监听器只是实现相对应的接口。而对应接口需要实现的方法有时不止一个。那么监听器是是如何找到对应要实现的方法飞哪?
3、一个监听器可以被几个组建注册。
4、gui下的事件机制总是让我有点疑惑。过去一直用的是命令行,现在开始接触gui后总觉得有一些不对的地方。命令行的思想已经根生地固。求高人指点
还有一个最最不我疑惑的问题。在控制台应用程序下,如果执行完了main函数的所有指令,那么这个程序应该说就已经结束了。(大多数情况下是这样的吧?)
然而若果我是在gui下。执行完main函数后,程序依然在执行。如果我此时触发一个事件,那么程序就会对此作出相应的反应。
我想说,gui的这种情况是怎么实现的?
展开
 我来答
woandsl
2012-09-26 · TA获得超过161个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:203万
展开全部
你说得是监听机制,也就是观察者模式
第一个
public interface RandomNumberListener {//接口
public void numberChanged(double d);
}

第二个
public class Consol implements RandomNumberListener{

@Override
public void numberChanged(double d) {
System.out.println(d);
}

}

第三个
public class SwingWindow
extends JFrame
implements RandomNumberListener{//观察者
private JLabel label = new JLabel();
public SwingWindow(){
this.getContentPane().add( label);
this.setSize(300,200);
this.setVisible(true);
}

@Override
public void numberChanged(double d) {
label.setText(String.valueOf(d));
}

}

第四个
public class RandomNumber {//业务
private double r;
private List<RandomNumberListener> listeners = new ArrayList<RandomNumberListener>();

//添加所有观察者
public void addRandomNumberListener(RandomNumberListener lis){
listeners.add(lis);
}

public void random(){
r = Math.random();
//数据发生改变,通知所有的观察者
for (RandomNumberListener lis : listeners) {
lis.numberChanged(r);
}
}
}

第五个
public class Test {
public static void main(String[] args) throws InterruptedException{
RandomNumber rn = new RandomNumber();

SwingWindow sw = new SwingWindow();
Consol c = new Consol();

rn.addRandomNumberListener(sw);
rn.addRandomNumberListener(c);

while(true){
rn.random();
Thread.sleep(new Random().nextInt(3000)+1000L);
}
}

}
百度网友12ee0fd
2012-09-23 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1974万
展开全部
还有事件配发线程EDT在运行。所以程序没有退出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式