随笔分类 -  Java-Swing

[分享]正则文本替换器(已开源)
摘要:一个基于正则表达式的文本替换工具,允许使用替换函数,实时显示匹配结果和替换内容,非常实用。 阅读全文
posted @ 2013-07-25 05:26 trytocatch 阅读(4506) 评论(5) 推荐(0)
[Swing扩展组件分享]为JTable添加选择列(CheckBox)的包装类
摘要:有个时候,我们需要在Table中添加一列来标识某行是否被选中(不同于自带的行选择),同时又不方便去修改原来TableModel。为了解决这种问题,我编写了下面这个包装类(不知这么称呼是否恰当哈)。CheckBoxTableModelProxypackage trytocatch.swingplus.table;import java.util.BitSet;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.Abstract.. 阅读全文
posted @ 2013-04-30 18:49 trytocatch 阅读(2037) 评论(0) 推荐(0)
swing程序的关闭机制--看好你的swing.Timer,别让它成为程序不能退出的原凶
摘要:java中常见的Timer有两个,一个是javax.swing.Timer,另一个是java.utl.Timer,两者的功能大同小异,最主要的差别在于swing.Timer的任务是放到EDT线程中执行的,可以很方便地进行swing的UI操作,另外swing.Timer是一个守护线程,utl.Timer则是可以设置是否为守护线程。 JVM中有这样一个规定,如果非守护线程都退出了,那么JVM会关闭,不管是否还有守护线程在运行。 swing程序的关闭机制:在swing程序中,EDT线程负责处理事件,它是一个非守护线程;另外有一个名为AWT-Shutdown的非守护线程,负责在所有窗口都关闭后... 阅读全文
posted @ 2013-01-13 12:57 trytocatch 阅读(4277) 评论(0) 推荐(2)
JTextField限制输入长度的完美解决方案
摘要:关于JTextField限制输入字符长度的问题,因为没提供现成的api,所以我们得自己动手,来实现这个功能,网上也有很多这样的资料,大多是在JTextField的Document的insertString方法中动手脚,比较当前文本框的字符长度和最大长度,如果输入不涉及中文,该方法也堪称完美了。 细心的童鞋可能会发现,在swing里输入中文,有的是下方弹出一个小方框,显示当前输入的字母;有的是直接将这些字母显示在了文本输入框里,打完一个字词时,将这些字母清除掉,再将中文显示上去。这两种不同的显示方式取决于System.getProperty("java.awt.im.style&quo 阅读全文
posted @ 2012-11-30 11:31 trytocatch 阅读(9083) 评论(0) 推荐(0)
swing组件中数据更新与UI更新的关系
摘要:Java api 1.6public class RepaintManager extends Object此类管理重绘请求,以最大限度地降低重绘次数。例如,通过将多个请求折叠到对组件树成员的单个重绘中。从 1.6 开始,RepaintManager 处理对 Swing 的顶层组件(JApplet、JWindow、JFrame 和 JDialog)的重绘请求。在这些组件之一上对 repaint 的任何调用将生成适当的 addDirtyRegion 方法。以前批量添加swing组件的数据时,总担心每添加一条,它就刷新下界面,为了“避免”如此,有时我甚至重写Model的相关方法(有些默认的mode 阅读全文
posted @ 2012-08-14 11:45 trytocatch 阅读(1747) 评论(0) 推荐(0)
关于EDT和SwingUtilities的invokeLater和invokeAndWait
摘要:在swing系统中,有一个顶级的java.awt.Container(可能是一个JFrame或JDialog实例),负责启动一个EventDispatchThread的线程,单线程,这个线程是负责处理UI事件的,如点击按钮、窗口关闭等因此,如果将繁琐耗时的处理逻辑放到actionPerformed之类的事件处理方法中,那么这些代码是由EDT来执行的,而EDT负责处理UI事件,则会引起UI失去响应。此时,可以将处理逻辑放到一个新的线程中来执行,这样就不会影响EDT去处理UI事件,就不会“卡死”。但假如此逻辑需要更新UI,由于swing不是线程安全的,该线程直接修改可能会导致线程安全问题(该线程和 阅读全文
posted @ 2012-05-16 17:52 trytocatch 阅读(952) 评论(0) 推荐(0)