【问题标题】:Is it possible to encapsulate each small desktop GUI application in a class definition to assemble them as components, which can be easily replaced?是否可以将每个小型桌面 GUI 应用程序封装在一个类定义中,以将它们组装为组件,并且可以轻松替换?
【发布时间】:2025-12-10 21:55:01
【问题描述】:

是否存在用于桌面 GUI 应用程序的任何 GUI 平台(例如 Windows-API、Apple 的 Cocoa 或 Java/swing),以允许(或支持某种机制)实现一个小型 GUI 应用程序,该应用程序在类定义中包含许多数据驱动的 GUI 组件?

让我用一个例子来解释一下。假设我需要创建一个包含多个子组件的 City_GIS 应用程序,其中包括 City_ATC(显示城市空中交通管制的组件)、City_Ambulances(监控救护车的组件)等。飞机和救护车必须每隔几秒更新一次位置,点击飞机/救护车必须进行 Ajax 调用以获取最新数据并显示在表格中。

我想将每个组件实现为单独的 GUI 应用程序(即在 GUI 类中),以便我可以对其进行优化和单独测试。然后我必须能够将每个小型 GUI 应用程序实现组装成一个类,只需编写两行代码即可组装,例如:

    // Code needed to assemble City_ATC into the application is:
    RepComp AirTraffic= new CityATC_RCC (ACi, AirportCode); 
    ParentCanvas.AddChild (AirTraffic, 0, 0, null);

     // Code needed to assemble City_Ambulances into the application is:
     RepComp CityER= new City_Ambulances (ACi, ZipCode); 
     ParentCanvas.AddChild (CityER, 0, 0, null);

如果这个应用程序有十几个这样的子组件,我应该能够将每个子组件作为一个小的 GUI 应用程序来实现和测试(在一个类中,可以用来组装这个组件)。每个迷你 GUI 应用程序/类实现所有应用程序逻辑和表示逻辑。组装每个子组件的代码行数不得超过 3 到 5 行,删除行必须有效地删除子组件。

例如,飞机的形状必须反映模型(例如波音 747 或空中客车 330)并且必须用颜色编码以显示传入、传出等。负责每个此类组件的每个工程师都可以不断改进他的组件和/或经常添加此类功能并在没有意大利面条代码的情况下对其进行单独测试。由于每个 mini-GUI 应用程序/类都可以有一个独立的代码库(一组文件)和版本控制机制,他甚至不必看到为另一个 mini-GUI 应用程序/类实现的单行代码。也就是说,每个组件都没有意大利面条代码。

虽然可以创建这种 GUI 库,但我找不到任何现有的 GUI API 支持这个有用功能的方法。我绝对确信它可以支持这种特性,因为我们创建了一个 Java GUI 库来创建这样的 GUI 类,这些类可以被组装以构建复杂的数据驱动的 web 图形用户界面应用程序(例如,在 web 浏览器中运行)。

您可以通过访问网站http://pioneer-soft.com 并选择:“DEMO” -> “Real CBSD” -> “Assembling Replaceable Components for Multiple Cities”(在网页左侧)查看此类组件的演示。我们为每个城市创建了一个类(通过组装 ATC 和救护车的对象)并将多个对象传递给一个选项卡组件。这对于任何桌面 GUI 平台的桌面是否可行?

最好的问候, 拉朱

【问题讨论】:

    标签: user-interface web frameworks desktop


    【解决方案1】:

    如果我正确理解了您的问题,我认为您在谈论对话框。

    1> 在 windows MFC 中,有 CDialog 类。你必须从 CDialog 派生一个类,如果你想修改它的构造函数,把你的 http 调用放在 OnInit 函数中。之后,您只需使用

    调用它

    CAirTrafficDlg AirTraffic(ACi, AirportCode); AirTraffic.DoModal();

    您可以将类放在一个 dll 中并从不同的 EXE 调用。

    2> 还是更好的 WPF。我没有足够的 WPF 经验,但是 WPF 作为用户界面是使用 xaml 设计的,您可以将类及其 GUI 复制到另一个使用 MFC 复杂的项目。

    【讨论】:

    • 先生。安东尼,我不是说对话框。我的意思是添加迷你 GUI 应用程序与添加简单的 GUI 组件没有什么不同。例如,您可以使用以下简单代码添加 Push Button 或 Label: PushButton PB = new PushButton (“Push Me”, CallbackFunc); Canvas.addChild (PB, x_loc1, y_loc1); TextLable TL = new TextLable (“Hello World”); Canvas.addChild (TL, x_loc2, y_loc2);同样,应该能够组装在一个类中实现的迷你 GUI 应用程序。最好的问候,拉朱
    最近更新 更多