我有点像菜鸟,无法解决这个问题。我已经创建了一个GUI类的方法,它将文本插入文本区域:
public void setMyTextArea(String s) {
this.myTextArea.insert(s,0);
}
接下来我想安排一个石英调度程序的工作,但我想在我的文本区域显示某些数据。但是在我的工作中我没有我的Gui的实例,所以我不能使用上面的方法,因为它不是静态方法。我无法使其静态,因为myTextArea
是一个不能是静态的字段。
如何将我的Gui实例传递给作业?例如,我正在使用.usingJobData
传递数据,但我只看到传递布尔值,浮点数,整数,字符串,双打,即标准类型的选项。我错过了什么吗?我可以使用.usingJobData
传递对象吗?
我的计划是将Gui实例传递给Job,然后让实例使用方法setMyTextArea();
如果这不是正确的方法,请告诉我。谢谢!
答案 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”类型的值。 因此,您始终可以创建地图,在其中添加一些必需的值并将其传递给您的工作。