Swing是Java桌面问卷系统的最稳选择,组件成熟、文档全、不依赖额外模块;用JFrame+JPanel+JRadioButton/JCheckBox组合5分钟可搭建界面,需在EDT中创建组件、用ButtonGroup管理单选、SwingWorker防卡顿、PreparedStatement防注入、SQLite本地存储、DAO封装隔离数据库逻辑。
用Swing快速搭出问卷界面,别碰JavaFX
Swing仍是Java桌面问卷系统的最稳选择——组件成熟、文档全、不依赖额外模块。JavaFX虽新但打包复杂,尤其在企业内网或老旧JRE环境下容易报NoClassDefFoundError。直接用JFrame + JPanel + JRadioButton/JCheckBox组合,5分钟就能跑起来。
关键点:
- 所有UI组件必须在事件分发线程(EDT)中创建:用
SwingUtilities.invokeLater()包裹主窗口初始化 - 单选题用
ButtonGroup管理JRadioButton,否则多选失效 - 避免在
actionPerformed里写耗时操作(如数据库写入),用SwingWorker防界面卡死 - 字段校验放在提交前,别等
INSERT失败才弹窗——用户看不到SQLException里的SQLState
用JDBC连SQLite存问卷结果,省掉服务端
问卷系统不需要MySQL或PostgreSQL。SQLite文件即数据库,sqlite-jdbc一个jar搞定,无安装、无配置。路径用相对路径"data/survey.db",程序启动时检查文件是否存在,不存在就执行建表语句。
建表示例(适配常见题型):
立即学习“Java免费学习笔记(深入)”;
CREATE TABLE IF NOT EXISTS responses ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL, q1_score INTEGER, -- 单选:1~5评分 q2_option TEXT, -- 单选:A/B/C/D q3_text TEXT, -- 简答 q4_tags TEXT -- 多选(逗号拼接:"Java,Swing,SQLite") );
注意: