求一个java applet小程序的源代码

求高手做一个光的反射或者折射的一个applet小程序,要有源代码,最好有注释,非常感谢,急求!!!!做好了,可以发我邮箱zxt880421@126.com... 求高手做一个光的反射或者折射的一个applet小程序,要有源代码,最好有注释,非常感谢,急求!!!!
做好了,可以发我邮箱zxt880421@126.com
展开
 我来答
nanabear615
2010-04-30 · 超过15用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:38.7万
展开全部
我有一个代码 虽然不是光的折射 可是也实现了 小球碰倒边缘就会弹回来的源码
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;

public class BounceThread
{
public static void main(String[] args)
{
JFrame frame = new BounceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

class BallRunnable implements Runnable
{

public BallRunnable (Ball aBall, Component aComponent)
{
ball = aBall;
component = aComponent;
}

public void run()
{
try
{
for (int i = 1; i <= STEPS; i++)
{
ball.move(component.getBounds());
component.repaint();
Thread.sleep(DELAY);
}
}
catch (InterruptedException e)
{
}
}

private Ball ball;
private Component component;
public static final int STEPS = 1000;
public static final int DELAY = 4;
}

class Ball
{
//这块就是碰到 边缘就弹回来的地方的坐标
public void move(Rectangle2D bounds)
{

y += dy;
x +=dx;
if (x < bounds.getMinX())
{
x = bounds.getMinX();
dx = -dx;
}
if (x + XSIZE >= bounds.getMaxX())
{
x = bounds.getMaxX() - XSIZE;
dx = -dx;
}
if (y < bounds.getMinY())
{
y = bounds.getMinY();
dy = -dy;
}
if (y + YSIZE >= bounds.getMaxY())
{
y = bounds.getMaxY() - YSIZE;
dy = -dy;
}
}

public Ellipse2D getShape()
{
return new Ellipse2D.Double(x, y, XSIZE, YSIZE);
}

private static final int XSIZE = 15;
private static final int YSIZE = 15;
private double x = 0;
private double y = 0;
private double dx = 10;
private double dy = 100;
}

class BallPanel extends JPanel
{

public void add(Ball b)
{
balls.add(b);
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (Ball b : balls)
{
g2.fill(b.getShape());
}
}

private ArrayList<Ball> balls = new ArrayList<Ball>();
}

class BounceFrame extends JFrame
{

public BounceFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setTitle("BounceThread");

panel = new BallPanel();
add(panel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
addButton(buttonPanel, "Start",new ActionListener(){ public void actionPerformed(ActionEvent event){addBall(); }});
addButton(buttonPanel, "Close",new ActionListener(){public void actionPerformed(ActionEvent event){System.exit(0); } });
add (buttonPanel, BorderLayout.SOUTH);
}

public void addButton(Container c, String title, ActionListener listener)
{
JButton button = new JButton(title);
c.add(button);
button.addActionListener(listener);
}

public void addBall()
{
Ball b = new Ball();
panel.add(b);
Runnable r = new BallRunnable(b, panel);
Thread t = new Thread(r);
t.start();
}

private BallPanel panel;
public static final int DEFAULT_WIDTH = 4500;
public static final int DEFAULT_HEIGHT = 3500;
public static final int STEPS = 1000;
public static final int DELAY = 5;
}

稍加修改 你的源码就会实现
为了学好编程 我希望你自己动手 我已经把饭送入你嘴里了 不用我来嚼吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式