jdk6.0发布后,工作线程被SwingWorker的类处理
//这段代码主要是为读者展示如何处理背景任务,在程序中有六个顶层容器,可以在同一时间内打开,因为它们都处于工作线程
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test2
{
public static void main(String[] args)
{
try
{
SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
new mainframe();
}});
}
catch(Exception e){}
}
}
class mainframe extends Thread
{
static final int WIDTH=700;
static final int HEIGHT=400;
mainframe()
{
JFrame frame=new JFrame("SwingWorker测试程序");
JPanel pane=new JPanel();
frame.setContentPane(pane);
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
frame.setLocation(x,y);
frame.setVisible(true);
frame.setResizable(true);
JButton button1=new JButton("打开第一个窗口");
JButton button2=new JButton("打开第二个窗口");
JButton button3=new JButton("打开第三个窗口");
JButton button4=new JButton("打开第四个窗口");
JButton button5=new JButton("打开第五个窗口");
JButton button6=new JButton("打开第六个窗口");
pane.setLayout(new GridLayout(2,3));
pane.add(button1);
pane.add(button2);
pane.add(button3);
pane.add(button4);
pane.add(button5);
pane.add(button6);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame1 f=new frame1();
return null;
}
};
work.execute();
}
});
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame2 f=new frame2();
return null;
}
};
work.execute();
} });
button3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame3 f=new frame3();
return null;
}
};
work.execute();
} });
button4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame4 f=new frame4();
return null;
}
};
work.execute();
} });
button5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame5 f=new frame5();
return null;
}
};
work.execute();
} });
button6.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
SwingWorker work=new SwingWorker()
{
protected Object doInBackground() throws Exception {
try
{
sleep(10000);
}
catch(Exception e){}
frame6 f=new frame6();
return null;
}
};
work.execute();
} });
}
class frame1
{//创建一个窗口
frame1()
{
JFrame frame=new JFrame("SwingWorker测试程序1");
JPanel pane=new JPanel();
frame.setContentPane(pane);
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-mainframe.WIDTH)/2;
int y=(height-mainframe.HEIGHT)/2;
frame.setLocation(x,y);
frame.setVisible(true);
frame.setResizable(false);
JButton button1=new JButton("这是第一个窗口的结果");
pane.add(button1,"Center");
}
}
下面将给出第二个按钮组件所打开的第二个窗口的具体代码。
class frame2
{//创建一个窗口
frame2()
{
…………………………..//与第一个窗口中的代码内容相同
}
}
class frame3
{//创建一个窗口
frame3()
{
…………………………..//与第一个窗口中的代码内容相同
}
}
class frame4
{//创建一个窗口
frame4()
{
…………………………..//与第一个窗口中的代码内容相同
}
}
class frame5
{//创建一个窗口
frame5()
{
…………………………..//与第一个窗口中的代码内容相同
}
}
class frame6
{
frame6()
{
…………………………..//与第一个窗口中的代码内容相同
}
}
}
分享到:
相关推荐
本件超过了上传限制,请...第16~19章主要讲述有关Swing图形开发的其他知识,包括观感器、Swing线程与并发、模型与架构等。第20章通过一个综合实例使读者能够在实际开发中理解和巩固所学知识,从而提高综合应用能力。
模拟多进程的并发执行,java编写,swing实现
5.3.3 双端队列与工作密取77 5.4 阻塞方法与中断方法77 5.5 同步工具类78 5.5.1 闭锁79 5.5.2 FutureTask80 5.5.3 信号量82 5.5.4 栅栏83 5.6 构建高效且可伸缩的结果缓存85 第二部分 结构化并发应用程序 ...
j2se 18天笔记是根据网络上资料而制作成的CHM帮助文档 目录: Day01:java环境与数据类型 Day02:数据运算与数组 Day03:面向对象 Day04:修饰符与类权限 ...Day17:新特性与并发线程 Day18:软件开发流程
(2)建模简单:通过使用线程可以讲复杂并且异步的工作流进一步分解成一组简单并且同步的工作流,每个工作流在一个单独的线程中运行,并在特定的同步位置交互 (3)简化异步事件的处理:服务器应用程序在接受...
这是为了确保Swing应用程序在正确的线程中运行,避免出现并发访问问题。 Swing还提供了许多其他的GUI组件和功能,如文本框、标签、列表、菜单、工具栏、进度条、表格等。开发人员可以使用这些组件和功能来构建复杂...
这是一个类似于QQ的即时通讯的程序,基于socket的TCP通信,支持并发多线程,带Swing界面。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 5.精心的GUI设计允许快速操作和更精确的计时。 6.缓存和离线分析/回放测试结果。 JMeter的高可扩展性 1.可链接的取样器允许...
精选12种与多线程和并发处理相关的设计模式 264张图表 + 300段Java示例程序 = 轻松学习多线程编程 日本经典多线程入门书,原版长销11年! 1.图文并茂 通俗易懂 日本资-深技术作家、《程序员的数学》作者结城浩执笔...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...
我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...