`
laiseeme
  • 浏览: 124697 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

swing与并发【工作线程】

阅读更多
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()
	{
		…………………………..//与第一个窗口中的代码内容相同
     }
}
}

分享到:
评论

相关推荐

    JAVA 开发 Swing与多线程

    在Java开发中,Swing库是用来构建图形用户界面(GUI)的工具包,而多线程则是提升程序并发性能和响应能力的关键技术。Swing虽然是Java语言的一部分,但它设计为单线程模型,主要是为了简化GUI编程并避免复杂的同步...

    java Swing 多线程下载器

    在Java Swing中实现多线程下载,我们需要利用Java的并发特性。多线程允许我们同时处理多个任务,对于下载来说,这意味着我们可以将一个大文件分割成多个小部分,然后在不同的线程中并行下载这些部分。这极大地提高了...

    Java Swing 赛马 小游戏 线程 实例

    在Java中,线程是并发执行的代码段,它可以与程序的其他部分同时运行。在赛马游戏中,每个赛马可以被看作是一个独立的线程,它们在后台并行运行,模拟马匹的移动。这样做的好处是,即使赛马在移动,用户界面仍然能够...

    java + swing + io + 多线程 +聊天室

    在Java编程领域,Swing、IO(输入/输出)和多线程是构建复杂应用程序的重要技术,特别是当我们要创建一个局域网内的多人聊天室时。这个项目将这些技术巧妙地融合在一起,为学习者提供了丰富的实践机会。下面将详细...

    基于java swing的多线程电梯调度模拟

    线程内部可能包含电梯的状态管理(如上行、下行、停止)、目的地处理以及与其它线程的同步机制(如wait()和notify()方法)。 接着是"ListFrame.java"。这个名字暗示着它可能是一个Swing的JFrame子类,用于构建用户...

    java 抽奖系统 swing界面,多线程

    Java 抽奖系统是基于Swing图形用户界面(GUI)设计的一个应用程序,它利用多线程技术实现流畅的用户体验,并且可能涉及到数据流处理。这个系统对于初学者来说,是一个很好的学习项目,因为它涵盖了Java编程中的多个...

    java多线程+Socket+Swing做的局域网聊天程序

    【标题】"java多线程+Socket+Swing做的局域网聊天程序"涉及的核心知识点主要涵盖Java编程、多线程、网络通信以及图形用户界面设计。以下将详细阐述这些关键概念及其在实现局域网聊天程序中的应用。 **1. Java编程**...

    基于swing多线程的赛马游戏

    总的来说,“基于Swing多线程的赛马游戏”是一个综合性的项目,它涵盖了Java Swing GUI设计、多线程编程、并发控制、数据结构、用户交互等多个方面。这个案例对于初学者来说是一个绝佳的学习资源,通过实际操作可以...

    swing 线程 实现奖项抽取

    在这个“swing 线程 实现奖项抽取”的项目中,开发者利用Swing来创建一个交互式的抽奖应用,用户可以通过点击按钮触发抽奖过程。这个过程涉及到了多线程的概念,以确保界面的流畅性和数据处理的并发性。 首先,...

    JAVA+多线程+swing和awt技术+ 飞机大战+学习Java者

    标题中的“JAVA+多线程+swing和awt技术+ 飞机大战+学习Java者”揭示了这个压缩包包含的内容是关于Java编程的,特别是涉及到多线程和图形用户界面(GUI)开发,使用了Java的Swing和AWT库来实现一个“飞机大战”的游戏...

    Swing + Socket + 多线程 至尊QQ 客户端安装包

    【Swing + Socket + 多线程 至尊QQ 客户端安装包】是一个集成Swing图形界面、Socket通信和多线程技术的QQ类聊天应用。Swing是Java提供的一个用于创建桌面应用程序的GUI(图形用户界面)库,它提供了丰富的组件和样式...

    Java+Swing即时聊天系统,客户端和服务端,多线程,socket

    总结起来,Java+Swing即时聊天系统是通过结合Java的Swing库构建用户界面,利用多线程进行并发处理,通过Socket进行网络通信,实现用户间的实时消息传递。这样的系统为学习和理解Java的GUI编程、多线程以及网络编程...

    Swing中的线程研究.pdf

    Swing 是Java GUI库的一部分,主要用于构建桌面应用。在Swing中,线程管理是非常关键的概念,因为它涉及到用户界面...在多线程编程中,应始终确保在合适的线程中执行相应的工作,以提高用户体验并避免潜在的并发问题。

    java多线程聊天室(使用swing)

    在这个“java多线程聊天室”项目中,开发者使用Swing构建了一个支持多用户交流的界面,同时利用多线程技术来实现并发处理,确保聊天室的稳定和高效。 首先,让我们深入理解Java Swing的基础。Swing提供了丰富的组件...

    多线程抢红包带SwingUI

    在IT领域,多线程和线程间通信是并发编程中的重要概念,它们在提高程序效率、优化资源利用等方面发挥着关键作用。本项目“多线程抢红包带SwingUI”就是一个很好的实践示例,它结合了Java的Swing库来创建图形用户界面...

    swing,线程和网络编程教学示例

    在Java编程领域,Swing、线程和网络编程是三个重要的子领域,它们共同构建了丰富的应用程序基础。Swing主要用于创建图形用户界面(GUI),线程则是多任务处理的核心,而网络编程则允许程序通过互联网进行通信。让...

    Swing线程之SwingUtilities.invoke

    首先,理解线程安全和并发性是至关重要的。在多线程环境中,多个线程同时访问共享资源可能导致数据不一致或错误。为了解决这个问题,Swing引入了单线程模型,即EDT。EDT是一个专用于处理用户界面事件的线程,包括...

    模拟多进程并发

    9. **性能监控与调优**:开发者需要使用如JVisualVM等工具来监控线程状态,分析CPU和内存使用,以便优化并发程序的性能。 综上所述,这个“模拟多进程并发”的项目不仅涵盖了Java的并发编程,还涉及到了Swing的GUI...

    再论JavaSwing线程.pdf

    Java Swing线程是Java GUI应用程序开发中的核心概念,特别是在创建响应迅速...通过使用`SwingUtilities.invokeLater()`和`SwingWorker`等工具,可以有效地管理并发,防止阻塞Swing线程,从而提高应用的性能和用户体验。

    Java雷电游戏,主要用SWING和Java的进程,纯Java代码写的,主要为开发人员对Java线程的认识

    开发者可以通过研究游戏源码了解如何创建和启动线程,以及如何使用synchronized关键字和wait/notify机制实现线程间的通信与同步,以确保游戏运行的稳定性和响应速度。 此外,Java的事件驱动模型在处理用户交互时也...

Global site tag (gtag.js) - Google Analytics