2

我有点菜鸟,无法弄清楚这一点。我创建了我的 GUI 类的一个方法,它将文本插入到文本区域:

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

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

如何将我的 Gui 实例传递给 Job?例如,我目前正在传递数据,.usingJobData但我只看到传递布尔值、浮点数、整数、字符串、双精度值的选项,即标准类型。我错过了什么吗?我可以传递一个对象.usingJobData吗?

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

4

4 回答 4

3

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

public static Window[] getWindows()

获取已创建窗口的完整列表。遍历列表并找到所需的列表。然后将其传递给 Job。

于 2013-06-11T05:35:03.937 回答
1

没有任何usingJobData方法可以获取对象引用。

相反,您需要JobDataMap使用 with 填充自己put(String key, Object value)

然后你可以MapusingJobData(JobDataMap newJobDataMap)你的JobBuilder.

于 2013-06-11T10:34:04.777 回答
1

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

eghm...实际上它可以是静态字段,为什么不呢?

顺便说一句:对 gui 的所有更新都必须在 EDT 线程中完成,使用 SwingUtilities.invokeLater 从另一个线程对 gui 执行更改

于 2013-06-11T10:38:09.060 回答
1

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

我可以通过 .usingJobData 传递一个对象吗?

JobDataMap 可以接受“对象”类型的值。因此,您始终可以创建一个 map ,在其中放入一些必需的值并将其传递给您的工作。

于 2013-06-11T14:41:35.057 回答