Java Swing 线程执行任务(不然界面一直处于不可点击状态)

/**
 * 使用了线程中断在swing进度条中的应用,在run()中调用JProgressBar的setValue()方法。
 * <p>
 * 本例应用了线程的中断,2种中断方法:
 * <ul>
 * <li>运用interrupt()方法</li>
 * <li>在run()中使用无限循环,然后用一个布尔什标记去控制循环的停止</li>
 * </ul>
 * 另外,还有内部类与匿名内部类的分别使用。
 *
 * @author HAN
 *
 */ 

@SuppressWarnings("serial")
public class ThreadAndSwing extends JFrame{
    static Thread thread;
    JProgressBar progressBar;
    public ThreadAndSwing(){
        progressBar=new JProgressBar();
        progressBar.setStringPainted(true);
        Container container=getContentPane();
        container.add(progressBar, BorderLayout.NORTH);//在不指定布局管理器的情况下,默认使用BorderLayout。 若不使用布局管理器,需明确说明setLayout(new BorderLayout())  

        this.setTitle("线程中断在Swing进度条的使用");
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

        this.creatThread();
        thread.start();
//       thread_instance.setContinue(false); //另一种中断线程方式
        thread.interrupt();
    } 

    class Thread_instance implements Runnable{
        boolean isContinue=true;
        public void setContinue(boolean b){
            this.isContinue=b;
        }
        @Override
        public void run() {
            // TODO Auto-generated method stub
            int count=0; 

            while(true){
                progressBar.setValue(++count);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    System.out.println("当前程序被中断");
                    break;
                }
                if(!isContinue){
                    break;
                }
            }
            System.out.println("here");
        }
    }
    void creatThread(){
        thread=new Thread(new Thread_instance());
    }
    static void init(JFrame frame,int width,int height){
        frame.setSize(width,height);
    }
    public static void main (String[] args){
        init(new ThreadAndSwing(),300,100);
    }
} 
时间: 2024-08-26 18:16:04

Java Swing 线程执行任务(不然界面一直处于不可点击状态)的相关文章

java swing高仿酷我音乐界面代码例子下载

原文:java swing高仿酷我音乐界面代码例子下载 代码下载地址:http://www.zuidaima.com/share/1550463245044736.htm 高仿酷我音乐界面尽情欣赏 java swing高仿酷我音乐界面代码例子下载,布布扣,bubuko.com

停止一个java的线程执行

找了一个停止线程运行的方法,代码如下: public class stopThread extends Thread { private volatile boolean stop = false; @Override public void run(){ System.out.println("t1 is start..."); while(!stop){ System.out.println("t1 is running...."); } System.out.

Java Swing界面编程(1)

写多了jsp,对于页面式的系统已经写烦了,本人也開始着手于java swing的学习,作为菜鸟,仅想用博客记录下我的swing学习的历程.话不多说,首先開始我的第一个窗体化程序. 下面给出源码: package com.beyole.util; import java.awt.Color; import javax.swing.JFrame; public class test1 { public static void main(String[] args) { JFrame frame=ne

Java Swing界面编程(4)---获取本地字体

ubuntu 安装tp-link usb无线网卡 tl-wn821n 全过程 1.   无线网卡识别 在终端中输入   lsusb  ,观察插入USB无线网卡tl-wn821n,是否多显示出Realtek Semiconductor Corp .如有显示即说明该无线网卡已被ubuntu识别 Bus 002 Device 005: ID 0bda:8178 Realtek Semiconductor Corp.  Bus 002 Device 004: ID 413c:3016 Dell Comp

运用Swing以便在Java中实现简单的图形界面

Swing 是一个为 Java 设计的图形用户界面(GUI)工具包,同时也是 Java 基础类的一部分.本篇文章将运用 Swing 实现简单的图形界面,并输出 "Hello, World!"与"Welcome to Java!". HelloWorld.java 的代码如下所示: 1 import javax.swing.*; 2 3 public class HelloWorld{ 4 public static void main(String args[]){

Java swing五子棋源码及实现之Java 开发图形界面程序五子棋的实现方式

今天给大家介绍一下如何用Java swing实现五子棋的开发即用Java开发图形界面程序五子棋,代码由于太多,只贴部分,最下面会附上下载地址,废话不多说,下面我们先看一下运行结果: 接下来我们看代码: 首先是创建主frame框架界面: package org.liky.game.frame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import

java主线程等待所有子线程执行完毕在执行(常见面试题)

java主线程等待所有子线程执行完毕在执行(常见面试题) java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功,下面就说一下我能想到的方法,欢迎大家批评指正: 用sleep方法,让主线程睡眠一段时间,当然这个睡眠时间是主观的时间,是我们自己定的,这个方法不推荐,但是在这里还是写一下,毕竟是解决方法 2.使用Thread的join()等待所有

Java多线程--让主线程等待所有子线程执行完毕

数据量很大百万条记录,因此考虑到要用多线程并发执行,在写的过程中又遇到问题,我想统计所有子进程执行完毕总共的耗时,在第一个子进程创建前记录当前时间用System.currentTimeMillis()在最后一个子进程结束后记录当前时间,两次一减得到的时间差即为总共的用时,代码如下 Java代码   long tStart = System.currentTimeMillis(); System.out.println(Thread.currentThread().getName() + "开始&

Java多线程系列四——控制线程执行顺序

假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatch类:指定计数器,当计数器清零即取消阻塞 import java.util.concurrent.CountDownLatch; import org.junit.Assert; import org.junit.Test; /** * @Description: 规定线程次序的方法 */ publ