java 线程和Applet 编写Applet程序,当鼠标单击小程序窗口区域的某一点,由该点的下方打上一光束,以单击点为中心向四周呈同心圆散开,其效果类似放烟花,尽可能使制作的烟花更逼真。求教啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按上述操作之后定义一个数组,数组为圆的半径,比如int [] a ={1,2,3,4,5,4,2,1,0}然后根据数组,用线程启动,然后划圆,应该能达到那种效果 按上述操作之后定义一个数组,数组为圆的半径,比如int [] a ={1,2,3,4,5,4,2,1,0}然后根据数组,用线程启动,然后划圆,应该能达到那种效果 这个不会是作业吧,我会被骂的import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import javax.swing.JApplet;public class TApplet extends JApplet { abstract class Action { protected int clickX; protected int clickY; private boolean isFinish = false; private Action nextAction; public Action(int x, int y) { clickX = x; clickY = y; } public Action getNextAction() { return nextAction; } public boolean isFinish() { return isFinish; } public abstract void render(Graphics2D g); protected void setFinish(boolean flag) { isFinish = flag; } public void setNextAction(Action action) { nextAction = action; } public abstract void update(long timeMillions); } class BeginAction extends Action { private int beginX; private int beginY; private int currentX; private int currentY; public BeginAction(int x, int y) { super(x, y); beginX = currentX = x; beginY = currentY = y + 300; } @Override public void render(Graphics2D g) { g.setColor(Color.red); g.drawLine(beginX, beginY, currentX, currentY); } @Override public void update(long timeMillions) { if (!isFinish()) { currentY -= 2; if (currentY < clickY) setFinish(true); } } } class DiffuseAction extends Action{ private int radius = 0; public DiffuseAction(int x, int y) { super(x, y); } @Override public void render(Graphics2D g) { g.setColor(Color.red); g.drawRoundRect(clickX - radius / 2, clickY - radius / 2, radius, radius, radius, radius); } @Override public void update(long timeMillions) { radius += 2; if(radius > 400) setFinish(true); } } private static final int HEIGHT = 600; private static final int WIDTH = 600; private Action currentAction; private Thread currentThread; private BufferedImage image; @Override public void init() { super.init(); setSize(WIDTH, HEIGHT); addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { final int x = e.getX(); final int y = e.getY(); if(currentThread != null) currentThread.interrupt(); currentThread = new Thread() { public void run() { currentAction = new BeginAction(x, y); currentAction.setNextAction(new DiffuseAction(x, y)); try { while (true) { Thread.sleep(30); if(currentAction == null) break; if(!currentAction.isFinish()) currentAction .update(System.currentTimeMillis()); else currentAction = currentAction.getNextAction(); repaint(); } } catch (InterruptedException e) { } } }; currentThread.start(); } }); } public void paint(Graphics g){ super.paint(g); if (currentAction != null) currentAction.render((Graphics2D) g); } @Override public void update(Graphics g) { image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); paint(g2); g.drawImage(image, 0, 0, null); }} 和MICROSOFT的MOSS对应的JAVA门户软件? 求助!无法导入javax.servlet.*;javax.servlet.http.*? TTS JSAPI使用 创建Synthesizer时为NULL DatabaseMetaData.getTables()怎样过滤系统表 怎样在JSP中使用自己写的类 急!数据库的查询 两个裤衩了!高兴·散分50!(进者有分) 送分问题 jcreator哪里设置提示 方法 的? 问:Jdeveloper怎样设置才能使写代码更方便一点啊?比如自动换行等功能! JDK1.5中String.replace()的实现有点奇怪 求做作业
然后根据数组,用线程启动,然后划圆,应该能达到那种效果
按上述操作之后定义一个数组,数组为圆的半径,比如int [] a ={1,2,3,4,5,4,2,1,0}
然后根据数组,用线程启动,然后划圆,应该能达到那种效果
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;import javax.swing.JApplet;public class TApplet extends JApplet { abstract class Action {
protected int clickX;
protected int clickY;
private boolean isFinish = false;
private Action nextAction; public Action(int x, int y) {
clickX = x;
clickY = y;
} public Action getNextAction() {
return nextAction;
} public boolean isFinish() {
return isFinish;
} public abstract void render(Graphics2D g); protected void setFinish(boolean flag) {
isFinish = flag;
} public void setNextAction(Action action) {
nextAction = action;
} public abstract void update(long timeMillions);
} class BeginAction extends Action {
private int beginX;
private int beginY;
private int currentX;
private int currentY; public BeginAction(int x, int y) {
super(x, y);
beginX = currentX = x;
beginY = currentY = y + 300;
} @Override
public void render(Graphics2D g) {
g.setColor(Color.red);
g.drawLine(beginX, beginY, currentX, currentY);
} @Override
public void update(long timeMillions) {
if (!isFinish()) {
currentY -= 2;
if (currentY < clickY)
setFinish(true);
}
}
}
class DiffuseAction extends Action{
private int radius = 0;
public DiffuseAction(int x, int y) {
super(x, y);
}
@Override
public void render(Graphics2D g) {
g.setColor(Color.red);
g.drawRoundRect(clickX - radius / 2, clickY - radius / 2, radius, radius, radius, radius);
} @Override
public void update(long timeMillions) {
radius += 2;
if(radius > 400)
setFinish(true);
}
} private static final int HEIGHT = 600;
private static final int WIDTH = 600; private Action currentAction;
private Thread currentThread;
private BufferedImage image; @Override
public void init() {
super.init();
setSize(WIDTH, HEIGHT);
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
final int x = e.getX();
final int y = e.getY();
if(currentThread != null)
currentThread.interrupt();
currentThread = new Thread() {
public void run() {
currentAction = new BeginAction(x, y);
currentAction.setNextAction(new DiffuseAction(x, y));
try {
while (true) {
Thread.sleep(30);
if(currentAction == null)
break;
if(!currentAction.isFinish())
currentAction
.update(System.currentTimeMillis());
else
currentAction = currentAction.getNextAction();
repaint();
}
} catch (InterruptedException e) {
}
}
};
currentThread.start();
}
});
}
public void paint(Graphics g){
super.paint(g);
if (currentAction != null)
currentAction.render((Graphics2D) g);
}
@Override
public void update(Graphics g) {
image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.createGraphics();
paint(g2);
g.drawImage(image, 0, 0, null);
}
}