import java.util.Timer;
import java.awt.*;
import java.awt.event.*;
public class hx {
a e;
Frame f;
public void p()
{ Frame f= new Frame();
Timer timer = new Timer();
e=new a();
f.add(e,BorderLayout.CENTER); e.setBounds(100,0,20,20);
f.setSize(300,300);
f.setVisible(true);
timer.schedule(new MyTask(), 1000, 100);
} class MyTask extends java.util.TimerTask
{
public void run(){
a.i+=90;
a.repaint();//重绘
}
} class a extends Canvas
{ int i=0;
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillArc(0, 0, 100, 100, i, 180);
g.setColor(Color.yellow);
g.fillArc(0, 0, 100, 100, i+90, 180);
g.setColor(Color.blue);
g.fillArc(0, 0, 100, 100, i+180, 180);
}
}
public static void main(String[] args)
{
hx t=new hx();t.p();
}
}
提示是:无法从静态上下文应用非静态变量i和repaint()
import java.awt.*;
import java.awt.event.*;
public class hx {
a e;
Frame f;
public void p()
{ Frame f= new Frame();
Timer timer = new Timer();
e=new a();
f.add(e,BorderLayout.CENTER); e.setBounds(100,0,20,20);
f.setSize(300,300);
f.setVisible(true);
timer.schedule(new MyTask(), 1000, 100);
} class MyTask extends java.util.TimerTask
{
public void run(){
a.i+=90;
a.repaint();//重绘
}
} class a extends Canvas
{ int i=0;
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillArc(0, 0, 100, 100, i, 180);
g.setColor(Color.yellow);
g.fillArc(0, 0, 100, 100, i+90, 180);
g.setColor(Color.blue);
g.fillArc(0, 0, 100, 100, i+180, 180);
}
}
public static void main(String[] args)
{
hx t=new hx();t.p();
}
}
提示是:无法从静态上下文应用非静态变量i和repaint()
e.i += 90;
e.repaint();
<1>e.i+=90;
<2>e.repaint();//作用是重新绘制
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Timer;public class hx {
A e; Frame f; public void p() { Frame f = new Frame();
Timer timer = new Timer(); e = new A(); f.add(e, BorderLayout.CENTER); e.setBounds(100, 0, 20, 20);
f.setSize(300, 300);
f.setVisible(true);
//添加了这个
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
timer.schedule(new MyTask(e), 1000, 100);
} class MyTask extends java.util.TimerTask {
//修改了这里
A a;
//修改了这里
public MyTask(A a){
this.a=a;
}
public void run() {
a.i += 90;
a.repaint();// 重绘
}
} //把类名给你大写了
class A extends Canvas {
int i = 0; public void paint(Graphics g) {
g.setColor(Color.red);
g.fillArc(0, 0, 100, 100, i, 180);
g.setColor(Color.yellow);
g.fillArc(0, 0, 100, 100, i + 90, 180);
g.setColor(Color.blue);
g.fillArc(0, 0, 100, 100, i + 180, 180);
}
} public static void main(String[] args) {
hx t = new hx();
t.p();
}
}
要么你直接创建对象调用算了
static 是类级的,可以用点运算符调用
没有static修饰的就需要创建该类对象进行调用!