程序中用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();
}
}
分享到:
相关推荐
《Java 2 图形设计卷Ⅱ:SWING》是一本深入探讨Java图形用户界面(GUI)编程的专业书籍,主要聚焦于SWING框架。在Java世界中,SWING是用于构建桌面应用程序的重要库,它提供了丰富的组件和功能,使得开发者能够创建...
1. **组件体系**:介绍SWING中的JComponent类及其子类,如JButton、JLabel、JTextField等,以及如何使用它们来构建用户界面。 2. **布局管理器**:讲解如何使用BorderLayout、FlowLayout、GridLayout、CardLayout...
Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。在Swing中,你可以创建出丰富、交互性强的桌面应用,而且它的组件库提供了很多美观的外观和感觉。 ...
资源名称:Java2 图形设计 卷Ⅱ:Swing 内容简介:Swing是一流的Java图形用户界面开发工具。本书详细介绍了Swing的设计思想、体系结构、使用技巧,内容丰富、深入细致、分析透彻。本书用大量实例代码介绍了每个组件...
界面绘制:swing IDE:MyEclipse,IDEA java课程设计作业——基于java+swing构建的数独小游戏(源码+资源文件) 编程语言:java 界面绘制:swing IDE:MyEclipse,IDEAjava课程设计作业——基于java+swing构建的...
Java 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rarJava 2 图形设计卷Ⅱ:SWING.rar
根据提供的文件信息,我们可以推断出这是一份关于Java 2 Swing图形用户界面设计的教程或书籍资源。接下来,我们将围绕这份资料展开一系列与Swing相关的知识点介绍。 ### Java 2 Swing简介 Java 2平台提供了强大的...
Swing是Java提供的一种用于构建图形用户界面(GUI)的库,它允许开发者创建美观、交互性强的应用程序。在默认情况下,Swing组件的外观可能显得较为朴素,但通过一些特殊的技术,我们可以对其进行美化,使其更具吸引...
1. **Swing组件基础**:Swing 提供了各种组件,如 JButton、JLabel、JTextField、JTextArea、JComboBox、JRadioButton、JCheckBox等,这些组件用于构建交互式的用户界面。每个组件都有其特定的用途,例如JButton用于...
1. **组件树视图**:Swing Explorer提供了一个直观的组件树视图,显示了应用程序中的所有Swing组件及其层次结构。开发者可以通过这个视图查看每个组件的属性、事件监听器以及布局管理器,方便调整和优化UI设计。 2....
Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...
Java Swing是Java 2平台(JDK 1.2及以后版本)中用于构建桌面应用程序的GUI(图形用户界面)工具包。它属于Java Foundation Classes (JFC) 的一部分,提供了一组轻量级组件,使得开发者能够创建功能丰富的、交互性强...
1、概念:图形用户界面,是指采用图形方式显示的计算机操作用户界面 2、核心技术:Swing、AWT 3、优点 (1)可以写出我们心中想要的一些小工具 (2)工作时候,也许需要维护到 Swing 界面 (3)了解 MVC 架构,...
1. **Swing组件**:Swing提供了一系列组件,如JButton、JLabel、JTextField、JTextArea、JComboBox、JTable等,这些组件使得开发者能够创建各种类型的用户界面。每个组件都有丰富的API,可以定制外观和行为。 2. **...
1. **组件创建与布局管理**:Swing提供多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout以及GridBagLayout。理解如何使用这些布局管理器来组织组件,并使UI看起来专业且用户友好至关重要。 2. ...