Em chào các bác ạ.
Em đang làm một bài tập về nhà, yêu cầu cần sử dụng đa luồng.
Nhưng em gặp vấn đề không thể giải thích được.
Em có một custome của JPanel trong đó em implement MouseListener. Khi click vào, em sẽ lấy giá trị hiện tại của x, y.
@Override
public void mouseClicked(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
Constants.xClick = e.getX();
Constants.yClick = e.getY();
// System.out.println(Constants.xClick + " -- "+ Constants.yClick);
}
Constants là một lớp mà có hai biến static xClick và yClick.
Em tạo ra một luồng chạy liên tục kiểm tra xClick và yClick.
@Override
public void run() {
//super.run(); //To change body of generated methods, choose Tools | Templates.
while(true){
if(Constants.yClick != -1 && Constants.xClick != -1){
System.out.println("Fuck it");
}
}
}
Với điều kiện như trên thì dù em click vào màn hình bao nhiêu lần thì cũng không hiện dòng chữ.
Nhưng với :
@Override
public void run() {
//super.run(); //To change body of generated methods, choose Tools | Templates.
while(true){
if(Constants.yClick == -1 && Constants.xClick == -1){
System.out.println("Fuck it");
}
}
}
Thì dòng chữ in ra liên tục, nhưng đến khi em click vào màn panel thì nó dừng lại.
Mong cao nhân nào hiểu được vấn đề, giải thích giúp em với ạ,
Em cảm ơn ạ.