java问题 请看补充

importjava.lang.Thread;importjava.awt.*;importjavax.swing.JFrame;publicclasssunextend... import java.lang.Thread;
import java.awt.*;
import javax.swing.JFrame;
public class sun extends JFrame
{
public static Graphics gra_ball;
public static void main(String arges[])
{
new sun();
}
public sun()
{
//获得画布
gra_ball=getGraphics();
//线程
ball_run p = new ball_run();
new Thread(p).start();
}
}
class ball_run implements Runnable
{
//构造方法
public ball_run()
{
sun.gra_ball.drawOval(100,100,52,52);
}
//重写Runnable的run方法
public void run()
{
}
}
为什么直接没有反应,没有出错,但是提示exception in thread“main”
at baal_run<intit>

at sun<init>.............
另一个问题
如何把这个改进下,在这个.ball_run 类中加一个定时器

怕分被吞,选满意答案时会给很多分
展开
 我来答
NO静月夜
2012-12-12 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:88.8万
展开全部
改了下,供你参考,这块我也是刚学,出现异常是因为你的gra_ball==null.
import java.lang.Thread;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class sun extends JFrame {
public MyPanel jp;
JButton jb1=new JButton("change");

public static void main(String arges[]) {
new sun();
}

public sun() {
// 再Panel上进行绘图
jp=new MyPanel();
Container c=this.getContentPane();
c.add(jp);
this.setSize(800,600);
this.setVisible(true);

ball_run p = new ball_run();
new Thread(p).start();
}

class ball_run implements Runnable {
// 构造方法
public ball_run() {
jp.myPaint(200, 200, 100, 100);
}
// 重写Runnable的run方法
public void run() {

}
}
public class MyPanel extends JPanel{
int x=100;
int y=100;
int width=52;
int height=52;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println("paintComponent with x="+x);
g.setColor(Color.pink);
g.drawOval(x, y, width, height);
}
@Override
public void paint(Graphics g){
System.out.println("enter paint");
super.paint(g);
System.out.println("paint x="+x);
g.setColor(Color.BLACK);
g.drawOval(x, y, width, height);
}
public void myPaint(int x,int y,int width,int height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
repaint();
}
}
}
沫声墨o
2012-12-12 · 超过53用户采纳过TA的回答
知道答主
回答量:179
采纳率:100%
帮助的人:114万
展开全部
public ball_run()
{
sun.gra_ball.drawOval(100,100,52,52);
}
sun你在这个构造函数里没有初始化为null 当然会出错
应该是new sun();但是你要是这么调用的话就会进入死循环 你再捋一下你的思路。
new sun()时调用构造函数sun() sun()里会调用方法ball_sun() ball_sun()又要重新初始化一个new sun()就会进入死循环。而你不对sun进行初始化,sun就是一个没有初始化的null,null调用什么发放都会出现空指针异常。。
更多追问追答
追问
sun.gra_ball这个是主类里面的一个静态成员

为什么要初始化主类sun
追答
你不初始化主类sun你怎么使用sun里面的成员变量去调用方法,你直接使用sun去调用不就是去用空去调用了么。用空调用当然就会出错。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式