Tôi có một chương trình chính, trong đó GUI dựa trên xoay và tùy thuộc vào một trong bốn trạng thái các phần tử GUI có các tham số khác nhau.Làm mới GUI bằng một chuỗi khác trong java (swing)
public class Frame extends JFrame implements Runnable {
Status status = 1;
...
@Override
public void run() {
switch (status) {
case 1:
...
case 2:
...
}
public void updateGUI(Status status) {
this.status = status;
SwingUtilities.invokeLater(this);
}
Và nếu tôi muốn làm mới GUI chỉ gọi cập nhậtGUI với thông số thích hợp và mọi thứ đều ổn. Nhưng chương trình cũng tạo ra một chuỗi bổ sung, mà sau khi xử lý các dữ liệu liên quan nên thay đổi chương trình chính GUI. Thật không may tôi không thể trong thread này gọi phương thức updateGUI (..).
Tôi biết rằng tôi có thể sử dụng invokeLater hoặc SwingWorker để làm mới nhưng có hơn 10 phần tử vì vậy tôi muốn sử dụng phương thức udpateGUI().
Tôi sẽ biết ơn vì bất kỳ gợi ý nào.
Vui lòng xem câu trả lời về sự kiện & xe buýt sự kiện trong câu hỏi này: http://stackoverflow.com/questions/7131484/how-to-pass-the-message-from-working-thread-to -gui-in-java/7131574 # 7131574 –
Tại sao bạn không thể gọi updateGUI từ chuỗi khác? Ngoài truy cập không đồng bộ vào biến trạng thái, tôi không thấy lý do tại sao bạn không thể sử dụng phương thức này từ chuỗi khác. –
nếu tôi gọi Frame f = new Frame(); f.udpateGUI (..); sau đó tất nhiên không có gì happend. Làm cách nào khác tôi có thể gọi phương thức đó? – galica