众所周知,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,不然会发生错误