Java 混合线程中Swing辅助线程的使用
我有一个GUI,它由一个工具栏组成,每个按钮调用不同的类。I调用的类由显示在主GUI内部框架中的UI组件组成。被调用的类作为一个单独的线程工作,必须执行以下功能Java 混合线程中Swing辅助线程的使用,java,multithreading,swing,jprogressbar,Java,Multithreading,Swing,Jprogressbar,我有一个GUI,它由一个工具栏组成,每个按钮调用不同的类。I调用的类由显示在主GUI内部框架中的UI组件组成。被调用的类作为一个单独的线程工作,必须执行以下功能 触发对客户端的命令,以便客户端开始发送 文件的内容 在此处接收文件内容,对其进行筛选并将其添加到JTable 文件内容传输期间必须显示进度条 将UI添加到表后显示该UI 我是Swing worker的新手,所以有人可以帮助我了解它是如何与我的情况配合工作的,以及使用Swing worker和调用以后的函数的优点。我在oracle站点和其
我是Swing worker的新手,所以有人可以帮助我了解它是如何与我的情况配合工作的,以及使用Swing worker和调用以后的函数的优点。我在oracle站点和其他几个站点中学习了这些示例,但我不知道这对我的类是如何起作用的
SwingWorker
已经
- 通过
支持内置进度更改功能PropertyChange
- 具有帮助器方法,允许您通过
和publish
方法同步对UI的更新,从而使该过程大大简化process
- 一个自包含的工作流概念,它(通常)比您自己的工作流更易于使用。这条规则也有例外,但你的提纲不符合这些例外(IMHO)-这既是优点也是缺点
- (涉及从SQL源更新
,但展示了如何使用JTable
更新SwingWorker
)JTable
SwingWorker
的一个(可能)缺点是,它只允许(我相信)10个工作线程同时执行当您在将使用内部ExecutorService
的SwingWorker上调用execute()
时,工作线程限制适用。但是,您也可以将SwingWorker
提交给没有此类限制的任意ExecutorService
。这种可能性是有据可查的,因此不仅仅是副作用。@mad程序员感谢您的回复。我看到了你的回复。我的问题是,我在更新表时没有任何错误。它工作正常,但当我将进度条作为单独的框架运行时,它不会显示。仅显示帧轮廓,该轮廓也处于不透明状态。它就像某种玻璃窗格,代替了框架。@Holger我到现在还没有使用executor服务,所以我不能理解你的意思。无论如何,谢谢你的答复。@Holger同意,可以再填一点,因为知道你只能以这种方式执行SwingWorker
10s有时并不重要。只能从EDT的上下文与UI交互。使用SwingWorker
,在doInBackground
方法中执行长时间运行的操作,如果您知道需要做多少工作,您可以使用setProgress
触发一个PropertyChange
事件,您的进度窗口可以显示该事件。。。