Lỗi formWindowActivated.

sovo007007

Member
11/1/16
63
4
8
34
Em làm 1 ứng dụng Swing và chạy khá ổn nhưng kiểm tra lại thì mắc 1 lỗi sau mà tìm mãi không ra:
Bắt đầu chạy chương trình thì không có vấn đề gì cả và để nguyên cũng oke. Nhưng khi chương trình đang chạy mà em sử dụng 1 ứng dụng khác (duyệt web chẳng hạn) khi click để quay lại xem chương trình chạy như thế nào thì gần như các tham số của chương trình đã được reset lại trạng thái thiết lập ban đầu (đang = true thì chuyển thành false => là trạng thái khởi điểm ban đầu khi chạy chương trình).
Mong các bậc tiền bối giúp em với ạ. Em sử dụng: formWindowActivated(java.awt.event.WindowEvent evt) để chương trình bắt đầu chạy lên!
Em cảm ơn ạ!
 

quydtkt

Administrator
1/11/19
309
30
28
26
Bạn cho mình xem code của bạn nhé
 
Sửa lần cuối:

sovo007007

Member
11/1/16
63
4
8
34
Bạn cho mỉnh xem code của bạn nhé
PHP:
private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
        // TODO add your handling code here:
        mapAdds = listAdds();
        mapCTH = listCTH();
        mapT = listT();
        mapTA = listTA();
        mapTrangThai = listTrangThai();
        mapTrangThaiCoi = listTrangThaiCoi();
        for (Map.Entry<String, JLabel> entry : mapAdds.entrySet()) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        String ip = entry.getKey();
                        String dichVu = "";
                        try {
                            if (InetAddress.getByName(ip).isReachable(1000) == true) {
                                entry.getValue().setBackground(Color.green);
                                trangThai(ip, 1);
                                dichVu = entry.getValue().getToolTipText();
                                entry.getValue().setIcon(new javax.swing.ImageIcon(getClass().getResource("")));
                                entry.getValue().setText("B1");
                                for (Map.Entry<String, JLabel> entry1 : mapCTH.entrySet()) {
                                    if (entry1.getValue().equals(entry.getValue()) && InetAddress.getByName(entry1.getKey()).isReachable(1000) == true) {
                                        dichVu += "CTH:Ok";
                                    }
                                    if(entry1.getValue().equals(entry.getValue()) && InetAddress.getByName(entry1.getKey()).isReachable(1000) == false) {
                                        dichVu += "CTH:No";
                                    }                                   
                                }
                                for(Map.Entry<String, JLabel> entry2 : mapT.entrySet()){
                                    if (entry2.getValue().equals(entry.getValue()) && InetAddress.getByName(entry2.getKey()).isReachable(1000) == true) {
                                        dichVu += "; THOAI:Ok";
                                    }
                                    if(entry2.getValue().equals(entry.getValue()) && InetAddress.getByName(entry2.getKey()).isReachable(1000) == false) {
                                        dichVu += "; THOAI:No";
                                    }
                                }
                                for(Map.Entry<String, JLabel> entry3 : mapTA.entrySet()){
                                    if (entry3.getValue().equals(entry.getValue()) && InetAddress.getByName(entry3.getKey()).isReachable(1000) == true) {
                                        dichVu += "; TA:Ok";
                                    }
                                    if(entry3.getValue().equals(entry.getValue()) && InetAddress.getByName(entry3.getKey()).isReachable(1000) == false) {
                                        dichVu += "; TA:No";
                                    }
                                }
                                entry.getValue().setToolTipText(dichVu);
                            } else {
                                for (Map.Entry<String, Boolean> entry4 : mapTrangThaiCoi.entrySet()) {
                                    if (entry4.getKey().equals(entry.getKey())) {
                                        if (entry4.getValue() == true) {
                                            entry.getValue().setBackground(Color.red);
                                            entry.getValue().setIcon(new javax.swing.ImageIcon(getClass().getResource("")));
                                            entry.getValue().setText("B1");
                                            coi();
                                        } else {
                                            entry.getValue().setText("");
                                            entry.getValue().setIcon(new javax.swing.ImageIcon(getClass().getResource("/daothisi/main/muteSpeak.png")));
                                            entry.getValue().setToolTipText(entry.getValue().getToolTipText());
                                        }
                                    }
                                }
                                trangThai(ip, 0);
                                entry.getValue().setToolTipText(entry.getValue().getToolTipText());
                            }
                            Thread.sleep(2000);
                        } catch (Exception ex) {
                            entry.getValue().setBackground(Color.RED);
                        }
                    }
                }
            }).start();
        }
    }
 

quydtkt

Administrator
1/11/19
309
30
28
26
Bạn muốn nói đến biến nào. Theo phán đoán ban đầu của mình thì khi bạn active lại form, hàm formWindowActivated sẽ được gọi. Do đó mà biến đã được khởi tạo lại.

Java:
        mapAdds = listAdds();
        mapCTH = listCTH();
        mapT = listT();
        mapTA = listTA();
 
  • Like
Reactions: sovo007007

Joe

Thành viên VIP
21/1/13
2,889
1,291
113
Bạn cho mình xem code của bạn nhé
Dear admin Quydtkt. You've encouraged a member who ignored the rule that a question must be complete with codes. Incomplete question and Guessing are very bad for the reputation of this forum.
 
  • Like
Reactions: sovo007007

quydtkt

Administrator
1/11/19
309
30
28
26
Dear admin Quydtkt. You've encouraged a member who ignored the rule that a question must be complete with codes. Incomplete question and Guessing are very bad for the reputation of this forum.
Rút kinh nghiệm nha @sovo007007. Bạn nên post cả code của mình khi đặt câu hỏi
 
  • Like
Reactions: sovo007007

sovo007007

Member
11/1/16
63
4
8
34
Bạn muốn nói đến biến nào. Theo phán đoán ban đầu của mình thì khi bạn active lại form, hàm formWindowActivated sẽ được gọi. Do đó mà biến đã được khởi tạo lại.

Java:
        mapAdds = listAdds();
        mapCTH = listCTH();
        mapT = listT();
        mapTA = listTA();
Cám ơn A. Nhờ mấy dòng của Anh mà em đã xử lý được A ạ. Nó khởi tạo lại biến nên khi em quay lại thì sẽ trở về trạng thái ban đâu.