本人遇到了这样的一个问题:有两个程序,如下
package TankClient;import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;public class TestPaint {
public void paint(Graphics g){
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(50,50,30,30);
g.setColor(c);
}
public void launchFrame (){
Frame f = new Frame("tankwar");
f.setSize(800,600);
f.setLocation(150,200);
f.setResizable(false);
f.setVisible(true);
}
public static void main(String[] args){
new TestPaint().launchFrame();
}
}另外一个程序 是:
package TankClient;import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class TankClient extends Frame {
//定义窗口的宽和高,并把它们设为常量
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
Tank myTank = new Tank(50,50);
public void paint(Graphics g){
System.out.println("ok");
Color c = g.getColor();
myTank.draw(g);
g.setColor(c);
}
//创建一个窗口,并实现关闭功能
public void launchFrame(){
setSize(WIDTH,HEIGHT);
setBackground(Color.BLACK);
setResizable(false);
setLocation(250,150);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setVisible(true);
}
public static void main(String[] args){
new TankClient().launchFrame();
}
}
我想问的是为什么第一个程序不能在窗口里显示一个圆出来,而第二个却能呢,请高手指点迷津。
package TankClient;import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;public class TestPaint {
public void paint(Graphics g){
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(50,50,30,30);
g.setColor(c);
}
public void launchFrame (){
Frame f = new Frame("tankwar");
f.setSize(800,600);
f.setLocation(150,200);
f.setResizable(false);
f.setVisible(true);
}
public static void main(String[] args){
new TestPaint().launchFrame();
}
}另外一个程序 是:
package TankClient;import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class TankClient extends Frame {
//定义窗口的宽和高,并把它们设为常量
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
Tank myTank = new Tank(50,50);
public void paint(Graphics g){
System.out.println("ok");
Color c = g.getColor();
myTank.draw(g);
g.setColor(c);
}
//创建一个窗口,并实现关闭功能
public void launchFrame(){
setSize(WIDTH,HEIGHT);
setBackground(Color.BLACK);
setResizable(false);
setLocation(250,150);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setVisible(true);
}
public static void main(String[] args){
new TankClient().launchFrame();
}
}
我想问的是为什么第一个程序不能在窗口里显示一个圆出来,而第二个却能呢,请高手指点迷津。
建议在一般情况下,都用继承;不要自己写一个Frame
import java.awt.Frame;
import java.awt.Graphics;public class paintTest extends Frame {//Frame f = new Frame("tankwar");public void paint(Graphics g){
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(50,50,30,30);
g.setColor(c);
}public void launchFrame (){setSize(800,600);
setLocation(150,200);
setResizable(false);
setVisible(true);
}
public static void main(String[] args){
new paintTest().launchFrame();
}
}