0

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

谢谢!

4

1 回答 1

2

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

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

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

于 2017-07-15T08:43:27.250 回答