[Java][Thắc mắc/Hỏi] Tạm dừng chương trình trên Applet
Hè này mình đang tiếp cận Java theo cách Top - Down. Nên kiến thức ly thuyết mình chưa vững lắm (Vào năm học ở trường sẽ dạy môn này theo phương pháp Buttom-up nữa thì mình nghĩ sẽ hoàn thiện). Nên trong phần applet mình gặp chút vấn đề.
Mình mô phỏng trò đoán số, tạo 1 số ngẫu nhiên để đoán, rồi xuất hiện hộp thoại nhập số vào, nếu đoán đúng thì thông báo ra rồi dừng, nếu sai thì thông báo số lớn hơn hoặc nhỏ hơn gì đấy. Đoán tối đa 3 lần.
Trong trường hợp đoán sai, mình dừng chương trình 2 giây (Thread.sleep(2000) để người dùng nhìn thấy thông báo được “paint” ra rồi mới nhảy hộp thoại lên lại. Không hiểu vì sao trong 2 giây đó màn hình nó ko “repaint” nhỉ?
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JOptionPane;
public class GuessNumber extends Applet {
// tao so ngau nhien [0-20]
Random num = new Random();
int range = 21;
int randomNum = num.nextInt(range);
String result;
public void init() {
try {
// Toi da 3 lan doan
for (int i = 1; i <= 3; i++) {
// Hop thoai nhap so vao
String gNum = JOptionPane
.showInputDialog("Doan 1 chu so [0-20]: ");
// Chuyen chuoi vua nhap thanh so
int guessNumber = Integer.parseInt(gNum);
// Tra ve ket qua
result = check(guessNumber, randomNum);
if (guessNumber == randomNum) {
break;
}
repaint();
Thread.sleep(2000);
}
} catch (Exception e) {
}
}
public void paint(Graphics g) {
g.drawString(result, 30, 20);
}
// Kiem tra so vua nhap va so random co bang nhau khong
public String check(int a, int b) {
if (a == b) {
return "Congratulation!";
} else {
return (a > b) ? "Lon hon so ban vua doan"
: "Nho hon so ban vua doan";
}
}
}
Trong code này Đạt đâu thấy
paint
được gọi đâu nhỉ?Hàm paint(Graphics) được gọi thông qua hàm repaint() á a.
Em Đặt debug vào trong hàm
paint
xem thử có có dừng lại tại vị trí đó không?