swing改变UI正确的做法

众所周知,swing线程是不安全的,在编程的时候,特别要注意这点。我们可以这么写swing的线程。

public class Test {
    private static void createAndShowGUI() throws IOException {
        new MyFrame();
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    createAndShowGUI();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

class MyFrame extends JFrame {
    public MyFrame() {
    }
}

大家应该也知道,要想改变swing的UI,比如改变按钮的大小、改变文本的字体、向容器中增加控件等等不能在swing线程以外的线程中操作。正确的做法是:

new Thread(new Runnable() {
    public void run() {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                // 在这里写改变UI的操作
            }
        });
    }
}).start();

当然,要是在其他线程中改变UI是不会报错的,但不会报错不代表正确
在安卓开发中,则必须用UI线程操作UI,不然会发生错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值