构建交互式应用:从输入组件到硬件控制的全面指南
1. 优化输入组件
在当前的程序中,用户需要在 JTextField
中输入回复来回答问题。然而,大多数图形用户界面(GUI)并非如此,用户更习惯从组合框中选择选项。为了让程序更符合用户习惯,我们可以根据问题类型来显示不同的用户输入面板。
问题事实模板中有一个名为 type
的插槽,用于指示每个问题期望的答案类型。根据这个类型字段的值,界面需要显示不同的用户输入面板,主要有以下两种:
- 多项选择 :带有弹出菜单(组合框)的面板,包含一系列选项。
- 数字输入 :接受数字输入的文本字段。
可以对 ask
模块进行修改,以适应这一需求。修改 ask-user
函数,使其根据问题类型为每个问题设置合适的输入组件。对于数字答案的问题,使用现有的 JTextField
;对于多项选择问题,使用新的 JComboBox
。
设置 JComboBox
及其关联的“确定”按钮的过程与设置 JTextField
类似。创建组件后,需要为 JButton
添加一个事件处理程序,将所选项目作为答案事实进行断言:
(defglobal ?*acombo* = (new JComboBox (crea