`
liwenge
  • 浏览: 79607 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Item 1: swing界面锁死

阅读更多

程序中用swing组件时应注意,任何java程序都是由主线程中的main()方法开始执行,当main()方法中的JFrame调用setVisiable(true)后,引发了另一个线程——事件分派线程,而actionPerformed()及paintComponent()方法都是在事件分派线程中被调用,所以如果在actionPerformed()方法中有大量的耗时操作,将会导致用户界面无法响应用户请求,造成用户界面锁死。在这种情况下,最好在actionPerformed()方法中将耗时操作的程序部分移至一个新的线程中实现,这样程序在进行大量计算的同时又可以及时地响应用户请求.

package testswingguilock;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestSwingGUILock {
	TestSwingGUILock() {
		initGUI();
	}

	void costMoreTime() {
		double d = 0;
		//耗费大量时间的操作
		for (int i = 0; i < Integer.MAX_VALUE; i++)
			d += i;
		System.out.println("I have do so many works! The result is " + d);
	}

	void initGUI() {
		JButton jbutton = new JButton("Start");
		jbutton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("You have pressed me!");
				//将耗时操作放置在新的线程内完成
				new Thread(new Runnable() {
					public void run() {
						costMoreTime();
					}
				}).start();
			}
		});
		JFrame jframe = new JFrame();
		Container container = new Container();
		container.setLayout(new BorderLayout());
		container.add(jbutton, BorderLayout.SOUTH);
		jframe.setContentPane(container);
		jframe.setSize(200, 200);
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new TestSwingGUILock();
	}
}

 

 

0
0
分享到:
评论

相关推荐

    Java 2 图形设计卷Ⅱ:SWING

    《Java 2 图形设计卷Ⅱ:SWING》是一本深入探讨Java图形用户界面(GUI)编程的专业书籍,主要聚焦于SWING框架。在Java世界中,SWING是用于构建桌面应用程序的重要库,它提供了丰富的组件和功能,使得开发者能够创建...

    Java2图形设计卷II:SWING

    1. **组件体系**:介绍SWING中的JComponent类及其子类,如JButton、JLabel、JTextField等,以及如何使用它们来构建用户界面。 2. **布局管理器**:讲解如何使用BorderLayout、FlowLayout、GridLayout、CardLayout...

    java swing漂亮界面 超酷 javaswing教程

    Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。在Swing中,你可以创建出丰富、交互性强的桌面应用,而且它的组件库提供了很多美观的外观和感觉。 ...

    Java2图形设计卷Ⅱ:Swing

    资源名称:Java2 图形设计 卷Ⅱ:Swing 内容简介:Swing是一流的Java图形用户界面开发工具。本书详细介绍了Swing的设计思想、体系结构、使用技巧,内容丰富、深入细致、分析透彻。本书用大量实例代码介绍了每个组件...

    java课程设计作业-基于java+swing构建的数独小游戏(源码+资源文件)

    界面绘制:swing IDE:MyEclipse,IDEA java课程设计作业——基于java+swing构建的数独小游戏(源码+资源文件) 编程语言:java 界面绘制:swing IDE:MyEclipse,IDEAjava课程设计作业——基于java+swing构建的...

    Java 2 图形设计卷Ⅱ:SWING.rar

    Java 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rar

    【中文】【Java 2 图形设计卷Ⅱ:SWING】【chm】

    根据提供的文件信息,我们可以推断出这是一份关于Java 2 Swing图形用户界面设计的教程或书籍资源。接下来,我们将围绕这份资料展开一系列与Swing相关的知识点介绍。 ### Java 2 Swing简介 Java 2平台提供了强大的...

    swing界面美化包

    Swing是Java提供的一种用于构建图形用户界面(GUI)的库,它允许开发者创建美观、交互性强的应用程序。在默认情况下,Swing组件的外观可能显得较为朴素,但通过一些特殊的技术,我们可以对其进行美化,使其更具吸引...

    Java写的Swing界面系统

    1. **Swing组件基础**:Swing 提供了各种组件,如 JButton、JLabel、JTextField、JTextArea、JComboBox、JRadioButton、JCheckBox等,这些组件用于构建交互式的用户界面。每个组件都有其特定的用途,例如JButton用于...

    java源码:swing-explorer(Swing开发辅助工具).rar

    1. **组件树视图**:Swing Explorer提供了一个直观的组件树视图,显示了应用程序中的所有Swing组件及其层次结构。开发者可以通过这个视图查看每个组件的属性、事件监听器以及布局管理器,方便调整和优化UI设计。 2....

    Java Swing 界面美化包-含源码

    Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...

    Java 2图形设计 卷Ⅱ:SWING(上).rar

    Java Swing是Java 2平台(JDK 1.2及以后版本)中用于构建桌面应用程序的GUI(图形用户界面)工具包。它属于Java Foundation Classes (JFC) 的一部分,提供了一组轻量级组件,使得开发者能够创建功能丰富的、交互性强...

    一、GUI简介   1、概念:图形用户界面,是指采用图形方式显示的计算机操作用户界面 2、核心技术:Swing、AWT

    1、概念:图形用户界面,是指采用图形方式显示的计算机操作用户界面 2、核心技术:Swing、AWT 3、优点 (1)可以写出我们心中想要的一些小工具 (2)工作时候,也许需要维护到 Swing 界面 (3)了解 MVC 架构,...

    java swing界面教程

    1. **Swing组件**:Swing提供了一系列组件,如JButton、JLabel、JTextField、JTextArea、JComboBox、JTable等,这些组件使得开发者能够创建各种类型的用户界面。每个组件都有丰富的API,可以定制外观和行为。 2. **...

    JBuider第十一章:Swing2.rar

    1. **组件创建与布局管理**:Swing提供多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout以及GridBagLayout。理解如何使用这些布局管理器来组织组件,并使UI看起来专业且用户友好至关重要。 2. ...

Global site tag (gtag.js) - Google Analytics