弹跳的小球(applet实例)

直接上代码

功能:就是弹跳的小球碰到窗口的四个边边就会反向反弹,并提供停止,开始,和调整速度的三个控件。

Ball类是定义一些基本属性,包括初始化球的状态和球运动反弹的定义,和三个控件的方法。

package applet;

import javax.swing.Timer;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Ball extends JPanel{
	private int delay=10;           //初始化速度
	
	private Timer timer=new Timer(delay,new TimerListener());
	
	private int x=0;
	private int y=0;
	private int radius=5;
	private int dx=2;
	private int dy=2;
	
	public Ball() {
		timer.start();
	}
	
	private class TimerListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			repaint();
		}
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.red);
		
		if(x<radius)           //这四个是边界
			dx=Math.abs(dx);
		if(x>getWidth()-radius)
			dx=-Math.abs(dx);
		if(y<radius)
			dy=Math.abs(dy);
		if(y>getHeight()-radius)
			dy=-Math.abs(dy);
		
		x+=dx;    //下一次的位置是(x+dx,y+dy)
		y+=dy;
		g.fillOval(x-radius,y-radius,radius*2,radius*2);
	}
	
	public void suspend(){                //suspend和resume可以控制定时器的启动和停止
		timer.stop();
	}
	public void resume() {
		timer.start();
	}
	public void setDelay(int delay) {
		this.delay=delay;
		timer.setDelay(delay);
	}

}

这个类就是把面板给搞出来,可视化的呈现出来,然后再把几个动作的监听器写了

package applet;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class BallControl extends JPanel{
	private Ball ball=new Ball();
	private JButton jbtSuspend=new JButton ("Suspend");
	private JButton jbtResume=new JButton("Resume");
	private JScrollBar jsbDelay=new JScrollBar();      //滚动条
	
	public BallControl() {
		JPanel panel=new JPanel();
		panel.add(jbtSuspend);
		panel.add(jbtResume);
		
		ball.setBorder(new javax.swing.border.LineBorder(Color.red));
		jsbDelay.setOrientation(JScrollBar.HORIZONTAL);
		ball.setDelay(jsbDelay.getMaximum());
		setLayout(new BorderLayout());
		add(jsbDelay,BorderLayout.NORTH);
		add(ball,BorderLayout.CENTER);
		add(panel,BorderLayout.SOUTH);
		
		jbtSuspend.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ball.suspend();
			}
		});
		jbtResume.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ball.resume();
			}
		});
		jsbDelay.addAdjustmentListener(new AdjustmentListener() {          //根据进度条调整速度
			public void adjustmentValueChanged(AdjustmentEvent e) {
				ball.setDelay(jsbDelay.getMaximum()-e.getValue());
			}
		});
	}
}

applet准备运行

package applet;

import java.awt.*;
import javax.swing.*;

public class BounceBallApp extends JApplet{
	public BounceBallApp() {
		add(new BallControl());
	}

}

在这里插入图片描述

不知道为什么我的dos下面运行不了Appletviewer…直接点开html也 不行…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值