java se

八宝粥 2012-05-14 08:51:20
编写一个Java Applet程序,在Applet内部现实一个蓝色反弹球的程序。
通过mousePressed时间使该球开始运动,当球撞击Applet边框时,它应从边框弹回并以相反的方向运动。
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
八宝粥 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

Java code

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.*;

public class Main extends Applet implements Runnabl……
[/Quote]

果然是高手啊!我刚开始学,今天算是学习了,谢谢指教
sdojqy1122 2012-05-15
  • 打赏
  • 举报
回复

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.*;

public class Main extends Applet implements Runnable{
int x = 60, y = 100;
int dx = 5, dy = 5;
int rgb = 0;
Color color = new Color((int)(Math.random() * 0xFFFFFF));
final Thread moveThread;//加final
public static void main(String[] args) {
new Main();
}

public Main(){
moveThread = new Thread(this);
setSize(350, 350);
setBackground(Color.gray);
this.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e) {
System.out.println(moveThread.getState().toString());
if(moveThread.getState().equals(Thread.State.NEW)){
moveThread.start();
}
}
});
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;
doColor();
}else if ((x + 50) >= this.getWidth()) {
dx = -dx;
doColor();
}
if (y <= 0) {
dy = -dy;
doColor();
}else if ((y + 50) >= this.getHeight()){
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);
}
}

sdojqy1122 2012-05-15
  • 打赏
  • 举报
回复
this指的是当前对象,你都写了内部类了,不能用this.就应该是这样的。
this.addMouseListener(this.new 内部类名());
东西别学死了。什么是对象你有点混淆。照你这样要求继承MouseAdapter就完美了?写成实现MouseListener就可以了。别把学习的重点搞反了。
八宝粥 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

可以啊。多写一个类文件就是了,只是我那种,extends只能继承一个父类。
[/Quote]

内部类监听的时候,this.addMouseListener(this)中第二个this报错,还有内部类中不能有new Thread(this).start(this);不能启动线程
sdojqy1122 2012-05-14
  • 打赏
  • 举报
回复
可以啊。多写一个类文件就是了,只是我那种,extends只能继承一个父类。
八宝粥 2012-05-14
  • 打赏
  • 举报
回复
try again 能否解释哈为甚么这个接口没有写成适配器,我刚才写成了内部类的形式之后new Thread(this).start();报错为甚么?先谢过了
八宝粥 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

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.e……
[/Quote]
谢谢你啊!程序算然有缺点但是还是给了我很大帮助
sdojqy1122 2012-05-14
  • 打赏
  • 举报
回复

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) {

}
}


仅供参考。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧