30/09/2018, 18:26

Thuật toán di chuyển quả bóng

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

public class WaitDemo extends Applet implements Runnable, ActionListener{
	Thread t;
	int x=34,y=34;
	int dx=5,dy=5;
	JButton start, stop;
	String status="go";

	@Override
	public void init() {

		start = new JButton("Start");
		stop = new JButton("Stop");
		add(start);
		add(stop);
		start.addActionListener(this);
		stop.addActionListener(this);
		
		t=new Thread(this);
		t.start();
		
	}
	@Override
	public void run() {
		while(true){
			if(status.equals("Stop")){
				synchronized (t){
					try {
						t.wait();
					}catch(Exception e){
						e.printStackTrace();
					}
				}
			}
			if(x+dx>this.getWidth()||x+dx<0){
				dx = -dx;
			}
			if(y+dy>this.getHeight()||y+dy<0){
				dy = -dy;
			}
			x=x+dx;
			y=y+dy;
			repaint();
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
	public void paint(Graphics g){
		g.fillOval(x, y, 40, 40);	
	}
	@Override
	public void actionPerformed(ActionEvent arg0) {
		if(arg0.getSource()==stop){
			status="Stop";
		}
		if(arg0.getSource()==start){
			status="Go";
			synchronized (t) {
				t.notify();
			}
		}
	}
	
}

Mọi người cho em hỏi cái là tại sao khi em chạy 2 nút của em nó không luôn luôn hiện lên mà em phải click vào nút stop rồi mới hiện nút ạ? Theo như em nghĩ hàm repaint() nó xóa màn hình vẽ lại liên tục nên không thấy 2 nút đó. Thanks for reading

Bài liên quan
0