将文本插入到Quartz Schedule上的Swing textarea中

时间:2013-06-11 02:42:00

标签: java swing quartz-scheduler jtextarea

我有点像菜鸟,无法解决这个问题。我已经创建了一个GUI类的方法,它将文本插入文本区域:

 public void setMyTextArea(String s) {
         this.myTextArea.insert(s,0);
 }

接下来我想安排一个石英调度程序的工作,但我想在我的文本区域显示某些数据。但是在我的工作中我没有我的Gui的实例,所以我不能使用上面的方法,因为它不是静态方法。我无法使其静态,因为myTextArea是一个不能是静态的字段。

如何将我的Gui实例传递给作业?例如,我正在使用.usingJobData传递数据,但我只看到传递布尔值,浮点数,整数,字符串,双打,即标准类型的选项。我错过了什么吗?我可以使用.usingJobData传递对象吗?

我的计划是将Gui实例传递给Job,然后让实例使用方法setMyTextArea();如果这不是正确的方法,请告诉我。谢谢!

4 个答案:

答案 0 :(得分:3)

我认为您的GUI(例如JFrame实例)已创建且可见。您可以使用 java.awt.Window方法

public static Window[] getWindows()

获取已创建窗口的完整列表。遍历列表并找到所需的列表。然后把它传递给工作。

答案 1 :(得分:1)

没有usingJobData方法将采用对象引用。

相反,您需要使用JobDataMap

填充put(String key, Object value)

然后,您可以使用Map上的usingJobData(JobDataMap newJobDataMap)设置此JobBuilder

答案 2 :(得分:1)

  

是一个不能是静态的字段。

eghm ......它可能是静态场,为什么不呢?

btw:关于gui的所有更新必须在EDT线程中完成,使用SwingUtilities.invokeLater对来自其他线程的gui执行更改

答案 3 :(得分:1)

是。作业可以传递给作业运行时使用的任何对象。

  

我可以使用.usingJobData传递一个对象吗?

JobDataMap可以接受“Object”类型的值。 因此,您始终可以创建地图,在其中添加一些必需的值并将其传递给您的工作。