2012-12-16 30 views
1

我有一个类GuiApplication和一个类ImageHandler。 GUI可以与ImageHandler(以及图像)一起工作,通过一个名为Crawler的类来提供GUI可以使用的方法的外观。如何在不创建实例的情况下访问某个类中的特定组件/方法

有一个单独的类StartUp它有一个主要方法,唯一做的就是创建一个GuiApplication(基本上它启动程序)的实例。

在我的GUI中,有一个作为记录器的JTextPane:某些动作和事件将显示在那里。通过我的GUI中其他位置的输出,我可以轻松更新其值。但是,当我的域类中有输出时,例如ImageHandler,我什么都做不了。

有一个Try-Catch块可以防止我的程序崩溃,当一个意外的图像URL通过我的阅读器,当它发生时,我想在文本窗格中显示(“Error:File xxx could not be read”) 。

但是,我没有看到一个优雅的方式与我的GUI进行通信:我不能创建一个实例,因为这将创建一个新的GUI,我不认为接近我的GUI通过StartUp文件是好的也可以练习。

我正在考虑定义一个可以在整个项目中访问的不同类中的变量,但我首先需要一些意见。

+0

听起来像不良的外观设计。根据Joop的回答,我会添加一个_checked_异常,并且我会考虑将GUI直接与ImageHandler进行接口 - 在包装库时,Facade很有用,您是否真的只需要一个类的包装?你不应该定义一个全局变量,这是不好的做法。 – ignis

+0

目前还有一个类与方法有关连接到特定的网页,我打算添加类似的东西,如VideoHandler,所以我相信一个façade是适当的眼睛附加功能。我会刷新我的例外,他们似乎是解决这个问题的方法。 –

回答

2

实际的方法是抛出一个RuntimeException,它不需要改变方法的签名。在GUI中抓住它并做一个JOptionPane.showMessageDialog。

另一种方法是用事件处理程序扩展ImageHandler的API,并安装一个消息处理程序,该程序在GuiApplication JOptionPane.showMessageDialog中调用。

+0

好的,我会研究这两个选项! –

0

想到的一个选择是回调:将某个接口的实例(可以是匿名类)传递给执行工作的方法,当发生错误时调用该方法。

相关问题