我有一个班级GuiApplication
和一个班级ImageHandler
。 GUI可以通过名为ImageHandler
的类与Crawler
(以及图像)一起使用,该类为GUI可以使用的方法提供外观。
有一个名为StartUp
的单独的类,它有一个main方法,其中唯一要做的就是创建GuiApplication
的实例(所以基本上它启动程序)。
在我的GUI中,有一个JTextPane
作为记录器:某些动作和事件将在那里显示。使用来自GUI中其他位置的输出,我可以轻松更新其值。但是,如果有来自我的域类的输出,例如ImageHandler
,我无能为力。
有一个Try-Catch
块阻止我的程序在意外的图像URL通过我的阅读器时崩溃,当它出现时我想在textpane中显示这个(“错误:文件xxx不能是读”)。
但是,我没有看到一种优雅的方式将它传达给我的GUI:我无法创建实例,因为这会创建一个新的GUI,我不认为通过StartUp
接近我的GUI文件也是很好的做法。
我正在考虑在整个项目中可以访问的不同类中定义变量,但我首先想要一些意见。
答案 0 :(得分:2)
实用的方法是抛出一个RuntimeException,它不需要更改方法的签名。在GUI中捕获它并执行JOptionPane.showMessageDialog。
另一种方法是使用事件处理程序扩展ImageHandler的API,并安装一个在GuiApplication JOptionPane.showMessageDialog中调用的消息处理程序。
答案 1 :(得分:0)
我想到的一个选项是回调:将一个实例(可以是一个匿名类)传递给执行工作的方法的某个接口,它在发生错误时调用。