Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        2年前关闭。
                    
                
        

我想知道C#和Java中的GUI组件如何在后台工作。对我来说,似乎每个组件都需要有自己的线程在监听它。例如,如果您拥有Frame,ButtonA和ButtonB,那么是否存在三个单独的线程,然后分别监听它们?就像有一个在框架上监听的框架线程,一个在ButtonA上监听的ButtonA线程和在ButtonB上监听的第三个线程一样?否则如何同时收听?我也想知道在Visual Studio中使用GUI设计器是否不好。使用GUI设计器工具是否专业,我是否应该学习从头开始编写GUI?我应该知道如何用C#编写GUI吗?我已经在Java中非常了解Swing。

谢谢!

最佳答案

我不了解C#,但是AWT,Swing和JavaFX是单线程的,就像当今大多数GUI解决方案一样。 Swing中的主线程例如称为事件分配线程,其名称几乎可以告诉您它的功能。基本上,它从事件队列中提取事件并将其分配给相应的侦听器组件。例如。如果单击按钮,则操作系统将生成一个事件,该事件将在事件分发线程的队列中被查询。然后,事件分发线程将拉出事件,确定需要通知哪些组件(例如,通过检查单击的坐标),并在组件上调用相应的方法。

您可以在这里在Swing中找到有关线程的更多信息:http://docs.oracle.com/javase/tutorial/uiswing/concurrency/

上述方法或多或少地适用于大多数GUI框架。

10-07 20:04
查看更多