30/09/2018, 20:13

Lỗi xử lí sự kiện Button trong Java Swing

Em mới học Swing. Em có viết một đoạn code có chức năng như đồng hồ bấm giờ. Nhưng khi bấm vào Button để lấy thời gian và setText vào JLabel thì có lỗi. Em nghi là do luồng nhưng chưa có hướng xử lí. Các bác xem hộ em với. Em cảm ơn nhiều:

class Demo4 implements ActionListener{
    JLabel lbStatus;
    clocktime1 cl;
    JLabel lbCut;
    JButton btn;
    JFrame jfm;
    Demo4(){
     jfm= new JFrame("Hello");
     lbStatus= new JLabel("00000000");
     btn= new JButton("Cut");
     lbCut=new JLabel("00:00:00");
    jfm.setLayout(new FlowLayout());
    jfm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jfm.add(btn);
    btn.addActionListener(this);
    jfm.add(lbStatus);
    jfm.add(lbCut);
    jfm.setSize(200,300);
    jfm.setVisible(true);
}
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Cut")){
         //   jfm.add(lbCut=new JLabel(cl.str));
              lbCut.setText(cl.str);
        }
       // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}
class clocktime1{
    Demo4 dm4= new Demo4();
    int ms=0;
    int s=0;
    int m=0;
    String str="";
     clocktime1(){
      //  RunTime run1= new RunTime();
        try{
            for(;;){
                Thread.sleep(1);
                ms++;
                if(ms==1000){
                    s++;
                    ms=0;
                    
                }
                if(s==60){
                    m++;
                    s=0;
                    
                }
                dm4.lbStatus.setText(m+":"+s+":"+ms);
                str=m+":"+s+":"+ms;
              // run1.lbStatus.setText(m+":"+s+":"+ms);
             // System.out.println(m+":"+s+":"+ms);
            }
        }catch(Exception er){
            System.out.println("Error Runtime:"+er);
        }
    }
     
}
public class NewClass {
    public static void main(String[] args) {
        clocktime1 cl= new clocktime1();
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Demo4 dm= new Demo4();
                
                //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });
        
    }
}

Quốc Hùng viết 22:29 ngày 30/09/2018

dòng thứ 41 của bạn bị catch rồi, gặp giá trị null, bạn xem lại xem chỗ ấy có initialize chưa?

Leng Keng viết 22:24 ngày 30/09/2018

Em sửa được rồi. cám ơn bác nhá.

Bài liên quan
0