java swing jdk_javax.swing
提供一组“轻量级”(全Java语言)组件,这些组件在所有平台上尽可能地工作。
有关使用这些组件的程序员指南,请参阅“Java教程”中的 Creating a GUI with JFC/Swing 。
一般来说,Swing不是线程安全的。
除非另有说明,否则必须在事件派发线程上访问所有Swing组件和相关类。
典型的Swing应用程序响应于从用户手势生成的事件进行处理。 例如,点击一个JButton通知所有ActionListeners添加到JButton 。 由于在事件调度线程上调度了从用户手势生成的所有事件,因此大多数开发人员不受限制的影响。
然而,影响在于构建和显示Swing应用程序。 调用应用程序的main方法,或方法Applet ,没有事件调度线程上调用。 因此,在构造和显示应用程序或applet时,必须注意将控制转移到事件调度线程。 转移控制并开始使用Swing的首选方法是使用invokeLater 。 invokeLater方法安排在事件分派线程上处理Runnable 。 以下两个示例同样适用于传输控制和启动Swing应用程序:
import javax.swing.SwingUtilities;
public class MyApp implements Runnable {
public void run() {
// Invoked on the event dispatching thread.
// Construct and show GUI.
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new MyApp());
}
}
要么:
import javax.swing.SwingUtilities;
public class MyApp {
MyApp(String[] args) {
// Invoked on the event dispatching thread.
// Do any initialization here.
}
public void show() {
// Show the UI.
}
public static void main(final String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MyApp(args).show();
}
});
}
}
此限制也适用于附加到Swing组件的模型。
例如,如果TableModel附加到JTable , TableModel应在事件指派线程上修改TableModel 。
如果在单独的线程上修改模型,则存在异常和可能的显示损坏的风险。
虽然立即对UI进行更新通常是安全的,但在事件分派线程上执行时,有一个例外:如果模型侦听器在UI更新之前尝试进一步更改UI以反映挂起的更改,那么UI可能会渲染错误。 如果安装了应用程序的应用程序需要更新UI以响应将导致模型结构发生更改的事件,则会发生这种情况。 首先允许组件安装的侦听器处理此更改非常重要,因为无法保证可以调用侦听器的顺序。 解决方案是让应用程序侦听器使用SwingUtilities.invokeLater更改,以便在处理组件安装的所有模型侦听器之后对UI呈现进行任何更改。
由于所有事件都在事件调度线程上传递,因此必须注意事件处理。 特别是,在事件调度线程上执行的长时间运行的任务(例如网络io或计算密集型处理)阻止事件调度线程调度任何其他事件。 当事件调度线程被阻止时,应用程序完全没有响应用户输入。 有关使用Swing时执行此类处理的首选方法,请参阅SwingWorker 。
有关概述,教程,示例,指南和其他文档,请参阅:
java swing jdk_javax.swing相关推荐
- Java案例:Swing常用组件演示
文章目录 一.Swing (一)Swing概述 (二)Swing与AWT的关系 (三)Swing组件继承关系图 二.Swing常用组件演示 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建J ...
- 基于java+mysql的Swing+MySQL图书管理系统(java+swing+gui+mysql)
基于java+mysql的Swing+MySQL图书管理系统(java+swing+gui+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclip ...
- JAVA图形编程Swing之——JPanel绘图
JAVA图形编程Swing之--JPanel绘图 一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...
- java基础学习——Swing图形化用户界面编程
GUI概述 早期计算机系统中,电脑向用户提供的是单调.枯燥.纯字符状态的"命令行界面(CLI)".就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看 ...
- Java中的Swing概述
一.Swing特点 每个平台的GUI组件的显示会有所不同,但是在不同平台上运行使用Swing开发的应用程序时,就可以统一GUI组件的显示风格,因为Swing组件允许编程人员在跨平台时指定统一的外观和风 ...
- Java 中的 Swing 框架现在是不是被淘汰了?
关于java中的Swing框架,我先说下如下的观点. 1 只要是用java开发的商业项目,就指着来挣钱的项目,都不会用Swing框架. 2 所以对java初学者来说,根本没必要学swing,甚至连类似 ...
- 基于java+mysql的Swing+MySQL火车票售票管理系统
基于java+mysql的Swing+MySQL火车票售票管理系统 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程 ...
- 基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档)
基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可 ...
- java桌面宠物swing实现
java桌面宠物swing实现 在bilibili上看到一个少前小人的桌面程序 但他是Python写的. 于是就打算自己写一个java的 csdn上也有不少的桌面宠物程序,也给我提供了很好的参考 利用 ...
最新文章
- 一点小兴趣,一份小生意
- JavaScript教程之事件处理
- Oracle体系结构四(学习笔记)
- bzoj3275 Number
- Spark分组取TopN
- echart的x轴换行
- system什么意思c语言,system是什么意思?
- 2023年东南大学机械工程考研上岸经验
- 灵格斯词典(电脑端)+欧陆词典(手机端)
- 新战投入场,苏宁易购迎来破局发展新开端
- IOS微信分享调起微信后立刻返回到app中无法分享的问题
- web前端入门到实战:简单的图片轮播
- 百度搜索结果页面的参数_反馈搜索结果用时(rsv_sug4)
- 乐优商城之后台管理系统的环境搭建(七)
- 画动漫人物眼睛怎么上色
- SCAU 1037 计算数列和
- R语言ggplot2可视化:patchwork包将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图、两个可视化的组合结果对齐、并为组合图像的每个子图添加标题
- 《肥鸟笔记--基础数据结构》一、栈
- 傻瓜攻略(九)——MATLAB实现简单的多元线性回归(以炼钢转炉炉龄问题为例)
- CMD / UNIX 命令
热门文章
- mysql数据库主主_MySQL主主复制(图文详解)
- 【Elasticsearch】 Elasticsearch Suggester 自动纠错 详解
- 60-200-040-使用-命令-MySQL查看引擎的命令
- 【lucene】lucene 高级搜索
- Spring : Spring配置文件加载位置
- 批量删除Windows7中隧道适配器的方法
- Spring :读取配置文件(.properties、.yam)相关注解
- TaskAttempt killed because it ran on unusable node IP:8041 Container released on a *lost* node
- LoadDruidSegmentStep failed File does not exist: /druid/segments
- cdh集群的重启过程