不知道多少人有我这样的困惑,以前写的东西都是在console下面运行的(当然说实话,真的没有写过什么,就是在不及格的威胁之下,被迫写了排序小程序而已),结果当写GUI的时候,根本不知道程序是怎么执行的。以前的console就是程序从头到尾,main执行完毕了也就退出了。也知道有线程这么个概念,但是还是不能理解 1、现在,明明main执行完了,但是我们的程序还在那里等待着我们点击鼠标,而自己不退出,觉得不可思议。 2、还有就是,“事件的发生”激发这个事件对应的方法,但是事件从哪里来的啊,谁把“鼠标动了”这个事件送给我的组件的呢?也就是说,谁敲着我的组件的门说:“给你这个鼠标动了事件,准备准备,赶紧执行相应的方法去吧”。 肯定有个东西一直监控着鼠标、键盘,一旦有动静,立即朝外报告(报告可能就是告诉我的组件"有……事件了")。那么这个东西是什么呢??这个东西是不是在我们开机后就一直运行着,一直到我们晚上下班回去时关机??

解决方案 »

  1.   

    拙见如下:1、java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new GUITest().setVisible(true);
                }
            });
    main方法通过以上代码启动了一个GUI,实际上是启动了一个运行GUI的线程,与main关系就不大了。main虽然执行完了,但那个线程还没完,所以“我们的程序还在那里等待着我们点击鼠标,而自己不退出”。2、我认为,是操作系统在捕捉“事件”,然后调用我们的“事件处理程序”。GUI程序里的每个Components都已经在图形界面的操作系统那里登过记了,所以,操作系统会把每个事件通知这些组件。操作系统不仅能把“事件的发生”告诉基于GUI的java程序,也能把“事件的发生”告诉基于GUI的C++、VB、Delphi……的程序。
      

  2.   

    谢谢  trumplet(检查)和mq612(五斗米)  的回复,我会好好看看的 
    谢谢:)