日期:2014-05-20  浏览次数:20687 次

java se
编写一个Java Applet程序,在Applet内部现实一个蓝色反弹球的程序。
通过mousePressed时间使该球开始运动,当球撞击Applet边框时,它应从边框弹回并以相反的方向运动。

------解决方案--------------------
Java code

import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;

import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;

public class Main extends Applet implements Runnable,MouseListener{
    int x = 60, y = 100;
    int dx = 5, dy = 5;
    int rgb = 0;
    Color color = new Color((int)(Math.random() * 0xFFFFFF));

    public static void main(String[] args) {
        new Main();
    }

    public Main(){
        setSize(350, 350);
        setBackground(Color.gray);
        this.addMouseListener(this);
        this.setLayout(null);
        setVisible(true);
        
        
    }

    public void doColor() {
        rgb = (int)(Math.random()*0xFFFFFF);
        color = new Color(rgb);
    }

    public void run() {
        while (true) {
            if (x <= 0) {
                dx = -dx;
                dy = -dy;
                doColor();
            }else if ((x + 50) >= this.getWidth()) {
                dx = -dx;
                dy = -dy;
                doColor();
            }
            if (y <= 0) {
                dx = -dx;
                dy = -dy;
                doColor();
            }else if ((y + 50) >= this.getHeight()){
                dx = -dx;
                dy = -dy;
                doColor();
            }
            x = x + dx;
            y = y + dy;
            try {
                Thread.sleep(50);
                repaint();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public void paint(Graphics g) {
        Color c = g.getColor();
        g.setColor(color);
        g.fillOval(x, y, 50, 50);
        g.setColor(c);
    }
    
    @Override
    public void mouseClicked(MouseEvent e) {
        
    }

    @Override
    public void mousePressed(MouseEvent e){
        System.out.print(this);
        new Thread(this).start();
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        
    }
}