当前位置: 首页 > 面试题库 >

Java GUI线程-SwingWorker

陶鹏
2023-03-14
问题内容

我对SwingWorker和Java GUI有疑问。

我有几类,其处理的信息,我们可以给他们打电话Foo1Foo2Foo3。此处理可能需要很长时间。

这些都是的子类Foo,但是Foo本身并不是直接调用的(这些Foo[x]类使用继承自的方法Foo。为了使EDT自由绘制进度条,SwingWorker在保持对象层次结构时最好的使用方法是什么?是否具有包装器类,Foo1Worker extends SwingWorker并且有其doInBackground()调用Foo1.myProcessMethod()?即使Foo1不扩展SwingWorker,它仍然可以按我期望的那样工作吗?

编辑:澄清我的问题,Foo[x]即使他们已经是子类,我如何制作SwingWorkers?


问题答案:

我认为答案关键取决于Foo子类管理的数据类型。如果结果是同质的,只需相应地扩展SwingWorker和实例化具体的子类:

class Whatever {}

abstract class AbstractFoo extends SwingWorker<List<Whatever>, Whatever> {}

class Foo1 extends AbstractFoo {

    @Override
    protected List<Whatever> doInBackground() throws Exception {
        ...
    }
}

如果每个都管理不同的类型,则使父类通用,并使用所需的类型实例化每个具体的子类:

class Whatever {}
class Whichever {}

abstract class GenericAbstractFoo<T, V> extends SwingWorker<T, V> {}

class Foo2 extends GenericAbstractFoo<List<Whatever>, Whatever> {

    @Override
    protected List<Whatever> doInBackground() throws Exception {
        ...
    }
}

class Foo3 extends GenericAbstractFoo<List<Whichever>, Whichever> {

    @Override
    protected List<Whichever> doInBackground() throws Exception {
        ...
    }
}


 类似资料:
  • 我正在经历JavaAWT 例如,在这篇文章中-如何求解三角方程cos(πθ/β)−cos(2πθ/β)=0? 用户给出了一些复杂的方程式,并展示了图形的外观。 但是我们如何为这个等式编写一个Java的程序来生成图形GUI作为输出呢? 有人能给我指一些文档或链接,让我了解如何用Java实现这一点吗? 提前感谢。

  • 我用Java写了Tic-Tac-Toe。我似乎遇到的问题是,当(人类)播放器1和(计算机)播放器2之间出现平局时,GUI会冻结。我已经在“Buttonlistener”类和“Methods”中创建了一个tieCheck,以获得一个平局。 我的程序的工作方式是,当按下一个按钮时,它会将一个值传递给methods类中的数组。在这个数组中,1=玩家1,2=玩家2。 人类玩家总是先走,所以当人类玩家走了4

  • 当我点击一个按钮,JInternalFrame出现,我想迫使用户只能点击那个内部框架(外部框架应该被禁用),就在他关闭内部框架时,他可以使用外框。 我该怎么做?谢谢

  • 问题内容: Python中的和模块之间有什么区别? 问题答案: 在Python 3中,已重命名为。它是用于实现的基础结构代码,普通的Python代码不应该靠近它。 公开了底层操作系统级别流程的原始视图。这几乎绝不是您想要的,因此在Py3k中重命名以表明它实际上只是实现细节。 添加了一些额外的自动记帐功能,以及一些便捷实用程序,所有这些使它成为标准Python代码的首选。

  • 主要内容:一、MySql中的线程,二、主要方式,三、源码流程,四、总结一、MySql中的线程 在mysql中,每一个连接上来,就会分配给一个相关的THD数据类。在前面的分析中可以看到,连接器(Connectors)连接到的直接就是连接池,在连接池的线程处理中分为三部分,即一对一(一个连接对应一个线程),多对一(多个连接对应一个线程)和线程池(多对多)。 线程池和线程可以针对不同的具体场景来处理具体的事务,这样既兼顾了效率又提高了适应性,对于新手来说,这就是设计的一个

  • 线程(thread)是进程(process)中的一个实体,一个进程至少包含一个线程。比如,对于视频播放器,显示视频用一个线程,播放音频用另一个线程。如果我们把进程看成一个容器,则线程是此容器的工作单位。 进程和线程的区别主要有: 进程之间是相互独立的,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,但互不影响;而同一个进程的多个线程是内存共享的,所有变量都由所有线程共享; 由于进程间是独立的

  • 问题内容: 我正在为我的ubuntu服务器(针对我的多客户端匿名聊天程序)实现一种简单的线程池机制,并且需要使我的工作线程进入睡眠状态,直到需要执行一项工作(以函数指针和参数的形式) 。 我当前的系统即将关闭。我(工人线程正在)问经理是否有工作可用,以及是否有5毫秒没有睡眠。如果存在,请将作业添加到工作队列中并运行该函数。糟糕的循环浪费。 什么我 喜欢 做的是做一个简单的事件性的系统。我正在考虑有

  • 问题内容: 看起来我已经搞砸了Java线程/ OS线程和解释性语言。 在开始之前,我确实了解绿色线程是Java线程,其中JVM处理线程,并且整个Java进程仅作为单个OS线程运行。因此,在多处理器系统上是没有用的。 现在我的问题是。我有两个线程A和B。每个线程都有10万行独立代码。我在多处理器系统上的Java程序中运行这些线程。每个线程都将被赋予一个本机OS线程来运行,该线程可以在不同的CPU上运