gui 包
基本信息
| 属性 | 值 |
|---|---|
| 位置 | src/main/java/sedridor/amidst/gui/ |
| 类数 | 4 |
| 启用版本 | Minecraft 1.7.10 |
AMIDST 自身的 Swing 界面辅助类。注意与 菜单 GUI 区分:
本包是 sedridor.amidst.gui(AMIDST 库内部),
menu-guis 条目讲的是 sedridor.forgeamidst(Forge 侧,继承原版 MC 菜单)。
4 个类
| 类 | 作用 |
|---|---|
AmidstMenu |
菜单栏(JMenuBar),挂在 FinderWindow |
CrashDialog |
崩溃对话框,extends JFrame |
PNGFileFilter |
PNG 文件过滤器(文件对话框用) |
PlayerMenuItem |
玩家菜单项 |
CrashDialog
| 项 | 值 |
|---|---|
| 继承 | extends javax.swing.JFrame |
| 触发 | Amidst.main 里设置的 Thread.setDefaultUncaughtExceptionHandler |
⚠️ 这是第二个顶层 Swing 窗口(第一个是 FinderWindow)。
即崩溃时会额外弹出一个独立窗口,而不是 Minecraft 的
CrashReportScreen 或 FML 崩溃报告。
⚠️ Amidst 里的全局异常处理器:
Thread.setDefaultUncaughtExceptionHandler((thread, e) ->
Log.crash(e, "AMIDST has encounted an uncaught exception on thread: " + thread));
⚠️ 该字符串里有拼写错误 encounted(应为 encountered)——
源码既有拼写,引用时不要「顺手改正」。
⚠️ 设的是 setDefaultUncaughtExceptionHandler(全局),
即影响整个 JVM 进程的所有未捕获异常,不限于 AMIDST 线程。
在 Forge 环境下这会覆盖其它 mod / FML 的全局处理器。
AmidstMenu
JMenuBar,在 FinderWindow 构造器中
setJMenuBar(this.menuBar = new AmidstMenu(this)) 挂载。
两个「菜单」的区别(本仓易混点)
| 类 | 包 | 类型 | 出现位置 |
|---|---|---|---|
AmidstMenu |
sedridor.amidst.gui |
JMenuBar |
AMIDST 独立窗口顶部 |
GuiIngameMenuAmidst |
sedridor.forgeamidst |
extends GuiIngameMenu |
Minecraft 暂停菜单 |
GuiMainMenuAmidst |
sedridor.forgeamidst |
extends GuiMainMenu |
Minecraft 主菜单 |
⚠️ 后两者通过覆写原版菜单 + 插入按钮把 AMIDST 唤起,
菜单本身是 Minecraft 的;AmidstMenu 则属于 Swing 窗口内部。
见 菜单 GUI。
关联
- FinderWindow -
JMenuBar的宿主 - 菜单 GUI - Forge 侧的两个菜单覆写类
- Amidst - 全局异常处理器设置点
- 日志 -
Log.crash的实现