30/09/2018, 17:33

[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";
        }
    }
}
Mai Anh Dũng viết 19:35 ngày 30/09/2018

Trong code này Đạt đâu thấy paint được gọi đâu nhỉ?

Sơn Trần viết 19:46 ngày 30/09/2018

Hàm paint(Graphics) được gọi thông qua hàm repaint() á a.

Mai Anh Dũng viết 19:35 ngày 30/09/2018

Em Đặt debug vào trong hàm paint xem thử có có dừng lại tại vị trí đó không?

Bài liên quan
0