swing编程的一些需要注意的事情

Java-GUI 编程之 Swing 🚀 优质资源分享 🚀 学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 Swing概述 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现 阅读详情

swing是非线程安全的,也就是说,如果多个线程同时对一个swing组件进行操作,很可能会引发异常等问题,以至程序崩溃。毕竟,repaint是一个比较花费时间的操作,如果一个swing组件在repaint的过程中,其内容被更改,就会导致repaint的内容与修改后的内容不符,可能导致访问错误(比如多线程环境下修改一个List的item项)。

使用Swing的时候,有几个需要注意的地方。首先,当一个swing窗体被创建并现实的时候,会有一个叫做“事件分派线程”的线程被创建,所有的事件处理方法(repaint、actionPerformed等等)都是由这个线程负责执行的,也就是说,整个swing窗体(包含其中的组件)都是这个线程支撑的。

使用swing的几个规则:

1)如果遇到耗时的或者可能阻塞的事情要去做,就创建一个线程去处理它。比如,文件io、网络连接、大规模数据处理。不要放在事件分派线程中处理,以免导致swing界面不响应。

 2)如果一个处理需要从swing ui中读取数据,则应该在此方法处理任何具体事情前,将所有数据从UI中读取完毕,然后再处理。

3)如果你需要等待一个固定的时间,使用Timer而不要让事件分派线程sleep();,因为这里一sleep,别的事件就没法处理了。

4)不要在别的线程中操作ui,应该设置相应参数,让事件分派线程操作ui,保证只有一个线程操作swing这个线程非安全的东西。(swing程序的单一线程规则)

还有几个为数不多的方法是线程安全的:

JTestComponent.setTest();   JTestArea.insert/append/replaceRange

可以在任意的线程中添加/删除事件监听器。JComponent的repaint和revalidate方法可以在任意线程中调用,repaint方法调度一个重绘事件,revalidate调度一个布局事件,肯定也会紧接着构件一个重绘事件。

参考资料:《java2核心技术 卷II高级特性》

CoppeliaSim+matlab+simulink七轴机械臂仿真 七轴机械臂vrep+matlab+simulink 仿真 阅读详情

相关推荐

配置VS Code使用Linux服务器上的Matlab

0、需求 Linux服务器上安装有Matlab 无图形界面,只能使用命令行工具,编辑文件不方便 1、VS Code插件安装 在扩展商店中搜索matlab,会出现Matlab Extension Pack,里面有整理好的matlab扩展 这里只安装了第一排的三个扩展 2、设置(Windows、Mac的设置类似,只是不同系统的文件路径不同) 安装好扩展,重启VS Code后,进行设置 打开:文件→首选项→设置(或快捷键ctrl+,),搜索matlab,结果如下图所示;直接打开完整json配置文件(图

赵彬的博客 5009

Swing高级--树组件

Swing树

尤词的博客 880

【v4l2】在Android SDK中交叉编译v4l2-ctl

为调试Android设备中camera的相关功能,需要引入v4l2-ctl工具。由于厂商提供的Android SDK源码中未集成v4l2-utils(包含v4l2-ctl以及其它组件的工具包),故需要下载v4l2-utils源码,并在Android SDK中交叉编译生成v4l2-ctl可执行文件。本文讲述其过程步骤。

rentong123的博客 1324

Java Swing高级组件——分割面板

分割面板 分割面板由 JSplitPane 类实现,用来将其所在的区域分割成两部分,可根据情况决定是水平方向分割还是垂直方向分割,分割的两部分之间会有一个分隔条,通过调整分隔条的位置,可以自定义两部分的相对大小。 JSplitPane 类的常用构造方法。 1,JSplitPane():创建一个默认的分割面板。默认水平方向分割。 2,JSplitPane(int newOrientation):创建一个指定分割方向的分割面板,newOrientation 可选择的静态常量有HORIZONTAL_SPLIT(水

javanofa的博客 4153

3D结构光 vs TOF——手机厂商为何选择TOF方案?

3D视觉感知技术路线分析:结构光与TOF对比 3D视觉感知领域存在结构光和TOF两大主流技术。结构光基于三角定位法,精度高(毫米级)但工作距离短(<1.5米),适合人脸识别等近距离场景;TOF通过测量光脉冲飞行时间计算深度,精度中等(厘米级)但工作距离长(0.5-5米+),更适合AR导航等中远距离应用。手机厂商选型时考虑:前置认证选择结构光(如苹果FaceID),后置场景倾向TOF(安卓阵营),因后者更适配全面屏设计、环境适应性强且成本优势明显。两种技术互补共存,共同推动3D感知应用发展。

致力于lidar应用开发 114

uniapp - 超详细 H5 网页引入百度地图教程,附地图示例 / 获取当前设备定位的省市区、详细地址、经纬度信息 / 用户当前 IP 属地定位地理位置等等(新手小白快速上手,详细配置及使用全流程)

uniapp百度地图,uniapp百度地图ip属地定位,uniapp百度地图获取省市区详细地址经纬度等,uniapp百度地图当前用户设备定位省份市区详细所在地ip属地等详细教程示例,uniapp网页h5引入百度地图详细教程,uniapp h5网站使用百度地图详细教程,uniappH5端如何接入使用百度地图api,uniapp H5网页端百度地图获取地理位置信息,uniapp h5页面引入百度地图,uniapp h5平台百度地图获取城市信息,uniapp百度地图获取经纬度,uniapp 百度地图拿省市区用什么

🏆 前端领域优质创作者 6218

Java实用经验总结--Swing篇

Java实用经验总结--Swing篇前言本文前言部分为我的一些感想,如果你只对本文介绍的Java实用技巧感兴趣,可以跳过前言直接看正文的内容。本文的写作动机来源于最近接给人家帮忙写的一个小程序,主要用于管理分期付款的货款的一系列管理,包括过期款的纪录,过期款利息的计算,为提前付款的用户提供一些返款奖励等等,这些与本文无关自不必细说。为了尽快完成任务,我自然选择了我用得最多的Java

薛笛的专栏 5万+

0.嵌入式控制器EC实战 Embedded Controller开发概述

文章目录前言1.嵌入式控制器EC概述2.EC芯片框图(IT8502为例)3.General Purpose I/O Port (GPIO)4.SMBus(System Management Bus,系统管理总线)5.PWM、TACH6.KBC(KeyBoard Controller)7.PS/28.ADC(模数转换)总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 1.嵌入式控制器EC概述 嵌入式控制器EC是挂在CPU的L

qq_30135687的博客 1万+

Swing设计中的问题与方法

如何使JTextField和JTextArea具备复制粘贴功能? 这两个类都不支持复制粘贴功能,需要继承这个类再自己实现:具备复制粘贴功能的JTextField和JTextArea。 如何使JTextArea自动换行? JTextArea txa = new JTextArea(rows,cols); txa.setLineWrap(true); 如何使JTextArea具有滚

CS064的专栏 1242

Firefox卸载卡住不动的解决方案

本文主要介绍了Firefox卸载卡住不动的解决方案,希望能对使用Windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 15万+

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2660

swing 开发过程中遇到的奇葩问题

swing 开发过程中遇到的奇葩问题 1,实现Ctrl+Tab 切换页签的功能 但是在实际开发中遇到了问题,切换的时候,预期是切换到序号33的页签,结果切换到了序号34 的页签. 后来发现Ctrl+Tab是系统的快捷键,与程序实现功能混淆,导致错乱. 最后就在程序中使用Shift+Tab快捷键 Java代码 if(event.getC...

weixin_34162629的博客 195

ERROR conda.core.link:_execute(502): error occurred while installing conda-forge::setuptools 解决方案

本文主要介绍了ERROR conda.core.link:_execute(502): An error occurred while installing package mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge::setuptools-65.5.1-pyhd8ed1ab_0.FileNotFoundError(2, 系统找不到指定的文件。, None, 2) 解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

Java图形化界面编程之——Swing

1、Swing概述 Swing是由100%纯Java实现的,不再依赖于本地平台的GUI,因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为是轻量级组件,而依赖于本地平台的组件被称为重量级组件。 由于Swing的所有组件完全采用Java实现,不再调用本地平台的GUI,所以导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些,但相对于快速发展的硬件设施而言,这种微笑的速度差别无妨大碍。 使用Swing 的优势: Swing组件不再依赖于本地平台的GUI,无需采用

weixin_44623055的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java中swing编程中界面组件加载不出的问题

前段时间在用Java进行swing编程中出现的一个小问题,今天突然想起来,记录下来 练习时编写了一个简单的随机数生成器,代码如下: package NumberGenerator; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.Ac...

qq_36425800的博客 4962

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java图形化界面编程--Swing编程

三. Swing 编程 3.1 Swing概述 ​ 前一章己经介绍过AWT和Swing 的关系 , 因此不难知道 : 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现的,不再依赖于本地平台的 GUI, 因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件;而依赖于本地平台的 AWT 组件被称为重量级组件。 由于 Swing 的所有组件完全采用 Java 实现,不再调用本

爱我非你莫属的博客 3592

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Java基础之Swing】万字详谈GUI,一篇文章搞懂Swing

Swing:编程 🌈博客主页:强子的博客 📅 发文时间:2022.3.30 📕上篇文章-》awt实现弹球小游戏 🎈 一定存在只有你才能做成的事 🌹 博主水平有限,如有错误,欢迎指正 欢迎给位👍收藏💎评论✉ GUI之SwingSwing:编程📖📖3.1 Swing概述🍧🍧Swing的特征:🍩🍩3.2 Swing基本组件的用法🍭🍭3.3 Swing中的特殊容器🍱🍱3.4JProgressBar、ProgressMonitor、BoundedRangeModel实现进度条🍥🍥3.5 JList、JCombo

屠一乐的博客 2480

第12章Swing编程

第12章Swing编程 Swing它采用100%java实现 不在依赖本地平台,所有平台都可以保持相同的运行效果,对跨平台支持比较出色  实现了MVC设计模式也称为Model-Delegate(模式-代理) 12.1 Swing概况 独立于本地平台的Swing(速度慢点)组件被称为轻量级组件,而依赖本地平台的AWT组件被称为重量级组件   12.2 Swing 基本组件的用法 12.2

this is my 4225

GUI 编程(Swing 基础)

GUI 编程的实现,是由一系列图形化组件来完成的,这些 GUI 的构件被称为控件;在 Java 的早期版本中,GUI 控件由名为 AWT 的标准库来ᨀ供的。除了 GUI 组件外,AWT 还包括其它功能来支持图像绘画、处理剪切/复制类型的数据传 送,以及其它相关操作。便于用户输入的一组丰富的界面组件。将组件放置在适当位置的几中布局管理器事件处理模型。.图形和图像工具等等。要使用到该包中的类,则必须显式地声明如下语句:import java.awt.*;

m0_48205251的博客 1153

12.Swing编程

本章要点 Swing编程基础 Swing组件的继承层次 常见Swing组件的用法 使用JToolBar创建工具条 颜色选择对话框和文件浏览对话框 Swing提供的特殊容器 java的拖放操作 Swing的简化拖放操作 Applet基础知识 开发Applet的基本操作 使用appletviewer浏览Applet 开发进度条 开发滑动条 使用JTree和TreeModel...

qq_21874145的博客 702

Java图形化界面编程超详细知识点(5)——Swing编程

本篇文章主要介绍Java图形化界面编程中Swing类库的详细知识点总结,方便大家在图形化界面编程时快速找到自己所需要的方法,希望对大家完成课设有所帮助。

m0_66908465的博客 1万+

Swing编程初级应用

10.1 Swing中如何创建第一个窗体 Swing(轻量级的图形界面组件):是以AWT平台为基础构建起来的新组件与AWT相比,Swing组件在实现时不包括任何依赖特定平台的代码,因此具有更高的平台无关性和良好的移植性,所以Swing成为图形用户界面开发的首选 1.注意事项 这里虽然关闭了窗体,不代表结束了整个程序,所以还要从控制台去结束,需要加入设置代码,一般会在软件的主界面加入。 2.窗体子类的创建 不同的窗体具有不同的功能和特性,所以一般使用时会创建窗体类继承JFrame类,从而扩展它。 3.注意事项

m0_52241630的博客 167

java图形化界面编程-Swing 编程

​ 前一章己经介绍过AWT和Swing 的关系 , 因此不难知道 : 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现的,不再依赖于本地平台的 GUI, 因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件;而依赖于本地平台的 AWT 组件被称为重量级组件。 ​

憨的很正经的博客 911

java图形化界面编程之Swing

一文教你学会JavaSwing

weixin_51550438的博客 3134

Java Swing 总结应注意的问题

<br /> <br /> <br />Java Swing 总结应注意的问题:<br />1. 注意访问控制符的使用,暴露给用户的接口尽量的少。 <br />2. 关于硬编码:出错信息不能直接放在代码中;常数的定义要抽出来;常量要用final <br />3. 一个类只保存常量时,把它写成接口(static final) <br />4. 常量的定义:大写,下划线分开 <br />5. 尽量避免重复代码 <br />6. 首先想到的是Java中的集合对象(list,map,table),而不是数组 <br

lzwsky的专栏 351
上一篇: Tomcat 配置集锦
下一篇: java集合框架接口宏观结构:
DeepNightTwo
博客等级 码龄21年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值