01/10/2018, 08:18
Hỏi về Java Thread
Em viết 1 đoạn code nhỏ như bên dưới. Ace nào có thể giải thích hộ em tại sao khi em (run) rồi nhập vào 1 chuỗi tại sao chữ nó lại k nhấp nháy, trong khi em debug nó lại nhấp nháy (Em cảm ơn nhiều ạ~).
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test extends JFrame{
private static JLabel label;
private static JPanel panel;
private static String s = "";
public Test(){
System.out.println("Moi ban nhap vao ten cua minh: ");
s = new Scanner(System.in).nextLine();
this.setVisible(true);
this.setSize(new Dimension(300, 300));
panel = new JPanel();
label = new JLabel(s);
panel.add(label);
this.add(panel);
}
public static void main(String arg[]){
Runnable run = ()->{
Test test = new Test();
for(;;){
label.setText("");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
label.setText(s);
}
};
Thread thread = new Thread(run);
thread.run();
}
}
Bài liên quan
somebody help me~~~~~~
Khi tác động lên UI từ 1 background thread thì không nên gọi trực tiếp mà phải để main thread làm việc đó, nghĩa là bằng cách nào đó bạn phải để main thread tác động lên UI kiểu như mượn tay giết người ấy trong swing thì có class SwingUtilities với 2 phương thức invokeLater(bất đồng bộ, nghĩa là nó giao việc cho thèn main thread rồi thì không care nữa) và invokeAndWait(đồng bộ, nghĩa là nó đợi cho main thread làm xong việc mà nó giao rồi mới chạy tiếp).
Ý của đại ka là ném cái (run) vào trong EventQueue.invokeLate(); đúng k ạ @@! nếu đúng thì cái này em cũng thử rùi mà nó cũng thế … mà em viết kiểu như trên kia debbug nó vẫn nhấp nháy … khó hiểu quá a giải thích dùm em với… pls~
Cái này bạn đang tìm hiểu về multithread hay là jframe form vậy ?.
Thread trên swing anh ạ em thử làm 1 cái đơn giản thui