`
happyqing
  • 浏览: 3194477 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用多线程技术让你的Swing及时响应各类事件

阅读更多

 

在执行时间长点的任务是,主窗体不响应事件,这是因为你执行任务的线程是窗体的主线程,所有不能及时响应,应开新的线程里执行大任务。

 

使用线程例子

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

 

分享到:
评论

相关推荐

    基于java swing界面的图书管理系统

    - 多线程:在处理耗时操作(如数据库查询)时,使用多线程避免阻塞用户界面。 - 数据结构与算法:如哈希表优化查找效率,队列用于管理待处理任务等。 此外,良好的软件工程实践也很关键,如编写清晰的注释、遵循...

    动物管理系统,技术栈-Java 作为编程语言 -Swing用于图形用户界面

    开发者需要熟练掌握Java的多线程技术以提升用户体验,同时利用异常处理机制确保程序的稳定性。 总结,动物管理系统通过采用Java和Swing,实现了高效、友好的用户界面,满足了对动物信息的全方位管理需求。这种结合...

    基于JAVA网络远程监控系统软件的实现(源码).zip

    总的来说,基于JAVA的网络远程监控系统软件实现了对网络环境的全方位监控,结合了JAVA的网络编程、多线程、数据库操作、图形界面和Web服务等技术,为企业级的IT运维提供了有力的支持。其源码分析和学习,对于提升...

    冠状病毒疫情实时监控源码.zip

    同时,为了实现动态更新,可能需要掌握事件驱动编程,确保当数据变化时,界面能及时响应。 此外,项目的结构很可能遵循了MVC(Model-View-Controller)设计模式,这是Java应用开发中常见的架构模式。Model负责数据...

    java图书管理系统

    Java的多线程支持可以帮助开发者处理这类问题,确保系统响应的及时性和稳定性。 7. **数据校验**:为了保证数据的准确性和完整性,系统会包含数据校验机制,如检查图书编号的唯一性、借阅日期的有效性等。 8. **...

    大型实验-洒店管理系统

    利用Java的多线程和并发控制,可以实现高效的数据同步,确保房间状态信息的一致性。 5. **客户信息管理**:存储和管理客户的基本信息、消费记录等,为酒店提供客户分析数据,便于营销策略的制定。Java的面向对象...

    超市收银系统

    - **多线程**:提高程序响应速度,例如在后台处理库存更新、数据备份等任务。 通过这个课程设计,初学者不仅能掌握JAVA编程技术,还能了解软件开发的整体流程,包括需求分析、设计、编码、测试和维护等环节。这将对...

    物流信息管理系统

    - **多线程**:用于处理并发任务,提高系统的响应速度和吞吐量。 #### 三、系统功能模块 1. **数据处理**:包括对物流活动中的各项单据(入库单、出库单、退货单等)进行增删改查操作,以及流程控制,确保数据的...

    小型超市管理系统

    3. 异步处理:通过Java的多线程技术,实现后台数据处理与前台展示的分离,提升系统的响应速度。 4. JDBC:Java Database Connectivity,是Java访问数据库的标准接口,用于与数据库建立连接、执行SQL语句和处理结果集...

    Stock-Plugin-for-Thdis-Server

    5. **事件驱动与异步处理**:股票市场的快速变化要求插件能及时响应,这需要利用Java的事件驱动模型和异步编程技术,如CompletableFuture或Reactor。 6. **安全机制**:由于涉及金融交易,插件必须保证数据安全,...

Global site tag (gtag.js) - Google Analytics