读书人

Swing界面刷新有关问题

发布时间: 2013-03-21 10:08:17 作者: rapoo

Swing界面刷新问题

这个例子中,我们期望点击按钮后,JLabel和JTextField中每隔一秒钟刷新一下文本,顺序的显示以下的几句文本:

Button clickedStart to change text...接着显示数字1到10action end


很多人都会像下面的代码这样实现这个功能:

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {                                               new Thread(new Runnable() {            @Override            public void run() {                changeText("Button clicked");                try {                    Thread.sleep(1000);                } catch (InterruptedException ex) {                    ex.printStackTrace();                }                changeText("Start to change text...");                try {                    Thread.sleep(1000);                } catch (InterruptedException ex) {                    ex.printStackTrace();                }                for (int i = 0; i < 10; i++) {                    changeText((i+1)+"");                    try {                        Thread.sleep(1000);                    } catch (InterruptedException ex) {                        ex.printStackTrace();                    }                }                changeText("action end");            }        }).start();    }

我们可以看到,新的buttonActionPerformed方法中,仅仅是把整个代码段放在了一个线程中,并启动了线程。

我们在每次setText后,都睡眠了1秒钟,是为了看到界面真的实时的变化了,如果不睡眠,界面刷新会一闪而过,不利于观察。

再次运行代码,会发现,终于得到了我们期望的效果:JLabel和JTextField中的文本动态的变化了!

读书人网 >行业软件

热点推荐