网通社科技快报

单Java文件实现孙子兵法始计篇中英对照阅读器含7段导航与离屏导出

近日,一名开发者发布了一个极简但功能完整的古典文献阅读工具:仅用单个Java源文件(SunziReaderGui.java)实现了《孙子兵法·始计篇》的中英对照交互式阅读界面。程序基于AWT/Swing构建,未引入任何第三方库,兼容JDK 15及以上版本(使用文本块与switch表达式等现代语法),已在JDK 21环境验证通过。内容结构严格对应ctext.org划分的7个小节,左侧为段落编号按钮导航栏,中间显示繁体中文原文,右侧呈现Lionel Giles 1910年英译本;文字自动换行,切换段落时两侧滚动位置同步归零,避免错位。界面采用Kaiti SC等繁体字体回退策略,所有UI元素(包括按钮高亮、印章图标)均由paintComponent自定义绘制,风格统一且独立于系统主题。交互支持鼠标点击跳转、方向键←/→翻页、Home/End快速定位首尾段,页脚实时显示段落进度与快捷键提示;右下角设“資料來源 · ctext.org ↗”超链接,悬停变色、点击调用浏览器打开,headless环境下则弹出对话框展示URL。程序提供三种运行模式:默认启动、指定段落启动(如--section 6)、离屏导出PNG(--preview out.png)。其中--preview模式是关键创新:绕过窗口创建,手动触发布局与printAll()将内容渲染至BufferedImage保存,适用于CI/CD或文档自动化场景。数据以硬编码字符串数组嵌入源码,保障离线可用性与极致可移植性。该项目虽小,却完整覆盖GUI开发中的布局管理、状态同步、字体适配、事件处理与异常兜底,是高质量的Java Swing实战范例,亦体现轻量级本地应用在古籍阅读领域的实用价值。