在执行时间长点的任务是,主窗体不响应事件,这是因为你执行任务的线程是窗体的主线程,所有不能及时响应,应开新的线程里执行大任务。
使用线程例子
package com.urt.module; import javax.swing.*; import java.awt.event.*; import java.awt.*; //import com.borland.jbcl.layout.*; /** * Title: Description: Copyright: Copyright (c) 2002 Company: * * @author * @version 1.0 */ public class TestThread extends JFrame { JPanel jPanel1 = new JPanel(); //XYLayout xYLayout1 = new XYLayout(); JButton startButton = new JButton(); JButton stopButton = new JButton(); MyThread thread = null; public TestThread() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { //jPanel1.setLayout(xYLayout1); startButton.setText("start"); startButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { startButton_actionPerformed(e); } }); stopButton.setText("stop"); stopButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { stopButton_actionPerformed(e); } }); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(startButton); jPanel1.add(stopButton); } void startButton_actionPerformed(ActionEvent e) { if (thread != null) { thread.stop(); } thread = new MyThread(); thread.start(); } void stopButton_actionPerformed(ActionEvent e) { if (thread != null) { thread.stop(); } thread = null; } public static void main(String[] args) { TestThread test = new TestThread(); test.setSize(300, 400); test.show(); } private class MyThread extends Thread { public MyThread() { } public void run() { while (true) { try { sleep(100); } catch (InterruptedException e) { } System.out.println("this is a test!"); } } } }
简单的写法
private void btnCompareActionPerformed(java.awt.event.ActionEvent evt) { new Thread() { public void run() { //在这写代码,可以把逻辑写在另一个类里 //strOriginal } }.start(); }
在这也可以直接掉用另一个线程类去执行,记得调用是start(),不要调用run(),否则主窗体事件还是不能及时响应。
用Swing编写灵敏的图形用户界面
http://java.chinaitlab.com/Swing/23050.html
相关推荐
基于swing的多线程聊天室
JAVA 开发 Swing与多线程 JAVA 开发 Swing与多线程
C# 多线程技术,详解如何在C#中使用多线程技术。
超线程技术和粗粒度多线程技术
上次传了一个,结果忘了传源码,只有图片效果,害的大家以为我是标题党。 今天特地传了份源码。降一分。 这是服务端的src,客户端的也有。自己再我的资源中找吧。
一个自己写的实现了多线程加上线程间通信机制的抢红包小程序,采用了Swing界面,非常适合学习线程和应付小作业。
intel英特尔多核_多线程技术中文版
多线程Web服务器 处理多个响应 java
VB6 多线程技术,已经测试。稳定、方便、实用的VB6多线程技术(附老马的ActiveX多线程示例)
java+swing+io+多线程,一个简易的实现局域网内多人聊天的软件代码,用于学习交流。
多线程解决mfc对话框未响应、卡死问题
采用TCP协议开发的,swing做界面的java socket聊天室 支持群聊和私聊,发文件,以及用户登录注册等
使用swing做的java多线程聊天室代码,初学java,借鉴了前辈们的,然后自己修改增添了功能,希望能帮助到其他学java的同学
使用 VC 的多线程开发技术讲解多线程综合技术篇
委托、事件、多线程委托、事件、多线程委托、事件、多线程委托、事件、多线程委托、事件、多线程委托、事件、多线程委托、事件、多线程委托、事件、多线程
Java开发中的线程安全选择与Swing Swing API的设计目标是强大、灵活和易用。特别地,我们希望能让程序员们方便地建立新的Swing组件,不论是从头开始还是通过扩展我们所提供的一些组件
适合初学Java者
几个用java写的小例子,是学习的好参考。
C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行
java Swing窗体版多线程下载程序编写示例,多线程下载的实现, 将网络URL中指定的网络文件下载到本地文件中保存。 本代码中将完成新建任务构造器、配置文件构造器,保存下载信息,获取配置文件名,设置在前台显示...