import java.awt.*;
import java.awt.event.*;
import java.net.*;public class Ex18_1_db extends Frame{
int x=180,y=180;
Image buff,img;
public Ex18_1_db(String title){
super(title);
try{
Toolkit tk=getToolkit();
URL url=getClass().getResource("Red_Car.gif");
img=tk.getImage(url);
buff=createImage(33,49);
Graphics gg=buff.getGraphics();
gg.drawImage(img,0,0,this);
getGraphics().drawImage(buff,0,0,this);
}catch(Exception e){System.out.print("No");}
KeyListener dir=new KeyAdapter(){
public void keyPressed(KeyEvent e){
String s=e.getKeyText(e.getKeyCode());
if(s.equals("Right")){if(x<320)x+=10;else x+=0;}
else if(s.equals("Left")){if(x>0)x-=10;else x-=0;}
else if(s.equals("Up")){if(y>150)y-=10;else y-=0;}
else if(s.equals("Down")){if(y<320)y+=10;else y+=0;}
repaint();
}
};
addKeyListener(dir);
}
public static void main(String[] args){
Ex18_1_db ob=new Ex18_1_db("Ex18_1_db");
ob.setSize(360,360);
ob.setVisible(true);
}
}
这个程序老是出问题真不知道怎么解决了,请高手指点,先谢了。
import java.awt.event.*;
import java.net.*;public class Ex18_1_db extends Frame{
int x=180,y=180;
Image buff,img;
public Ex18_1_db(String title){
super(title);
try{
Toolkit tk=getToolkit();
URL url=getClass().getResource("Red_Car.gif");
img=tk.getImage(url);
buff=createImage(33,49);
Graphics gg=buff.getGraphics();
gg.drawImage(img,0,0,this);
getGraphics().drawImage(buff,0,0,this);
}catch(Exception e){System.out.print("No");}
KeyListener dir=new KeyAdapter(){
public void keyPressed(KeyEvent e){
String s=e.getKeyText(e.getKeyCode());
if(s.equals("Right")){if(x<320)x+=10;else x+=0;}
else if(s.equals("Left")){if(x>0)x-=10;else x-=0;}
else if(s.equals("Up")){if(y>150)y-=10;else y-=0;}
else if(s.equals("Down")){if(y<320)y+=10;else y+=0;}
repaint();
}
};
addKeyListener(dir);
}
public static void main(String[] args){
Ex18_1_db ob=new Ex18_1_db("Ex18_1_db");
ob.setSize(360,360);
ob.setVisible(true);
}
}
这个程序老是出问题真不知道怎么解决了,请高手指点,先谢了。
这句buff拿到的是null,原因么,上班时间哦调了1个小时也没调出来,日
public Image createImage(int width,
int height)
Creates an off-screen drawable image to be used for double buffering. Parameters:
width - the specified width
height - the specified height
Returns:
an off-screen drawable image, which can be used for double buffering. The return value may be null if the component is not displayable. This will always happen if GraphicsEnvironment.isHeadless() returns true.
Since:
JDK1.0
See Also:
isDisplayable(), GraphicsEnvironment.isHeadless()
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.net.*;public class Ex18_1 extends Frame{
Toolkit tk;
Image img;
int x=180,y=180;
public Ex18_1(String title){
super(title);
tk=getToolkit();
Class cl=getClass();
img=tk.getImage(cl.getResource("Red_Car.gif"));
KeyListener dir=new KeyAdapter(){
public void keyPressed(KeyEvent e){
String s=e.getKeyText(e.getKeyCode());
if(s.equals("Right")){if(x<320)x+=10;else x+=0;}
else if(s.equals("Left")){if(x>0)x-=10;else x-=0;}
else if(s.equals("Up")){if(y>150)y-=10;else y-=0;}
else if(s.equals("Down")){if(y<320)y+=10;else y+=0;}
repaint();
}
};
addKeyListener(dir);
}
public void paint(Graphics g){
Graphics2D g2=(Graphics2D)g;
g2.translate(x,y);
g2.drawImage(img,-1,-1, this);
}
public static void main(String[] args){
Ex18_1 ob=new Ex18_1("Ex18_1");
ob.setSize(360,360);
ob.setVisible(true);
}
}我没用APPLET的
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.awt.image.*;public class Ex18_1_db extends Frame{
int x=180,y=180;
Image buffer;
Image img;
Toolkit tk;
public Ex18_1_db(String title){
super(title);
KeyListener dir=new KeyAdapter(){
public void keyPressed(KeyEvent e){
String s=e.getKeyText(e.getKeyCode());
if(s.equals("Right")){if(x<320)x+=10;else x+=0;}
else if(s.equals("Left")){if(x>0)x-=10;else x-=0;}
else if(s.equals("Up")){if(y>150)y-=10;else y-=0;}
else if(s.equals("Down")){if(y<320)y+=10;else y+=0;}
repaint();
}
};
addKeyListener(dir);
}
public void paint(Graphics g){
img=getToolkit().getImage(getClass().getResource("Red_Car.gif"));
buffer=createImage(38,42);
Graphics gb=buffer.getGraphics();
gb.drawImage(img,0,0,38,42,this);
g.drawImage(buffer,x,y,null);
}
public static void main(String[] args){
Ex18_1_db ob=new Ex18_1_db("Ex18_1_db");
ob.setSize(360,360);
ob.setVisible(true);
}
}
public void paint(Graphics g){
if(img==null)
img=getToolkit().getImage(getClass().getResource("Red_Car.gif"));
if(buffer==null){
Graphics gb=buffer.getGraphics();
gb.drawImage(img,0,0,38,42,this);
}
g.drawImage(buffer, x, y, null);
}
另外在你的update(Graphics g)直接调用paint方法可以减少闪烁
public void update(Graphics g){
paint(g);
}
import java.awt.event.*;
import java.net.*;public class Ex18_1_db extends Frame{
int x=180,y=180;
Image buffer,img;
Graphics gb;
public Ex18_1_db(String title){
super(title);
KeyListener dir=new KeyAdapter(){
public void keyPressed(KeyEvent e){
String s=e.getKeyText(e.getKeyCode());
if(s.equals("Right")){if(x<320)x+=6;else x+=0;}
else if(s.equals("Left")){if(x>0)x-=6;else x-=0;}
else if(s.equals("Up")){if(y>150)y-=6;else y-=0;}
else if(s.equals("Down")){if(y<320)y+=6;else y+=0;}
repaint();
}
};
addKeyListener(dir);
}
public void paint(Graphics g){
if(img==null){
img=getToolkit().getImage(getClass().getResource("Red_Car.gif"));
}
if(buffer==null){
buffer=createImage(getWidth(),getHeight());
gb=buffer.getGraphics();
}
gb.clearRect(0,0,getWidth(),getHeight());
gb.drawImage(img,x,y,this);
g.drawImage(buffer,0,0,null);
}
public void update(Graphics g){
paint(g);
}
public static void main(String[] args){
Ex18_1_db ob=new Ex18_1_db("Ex18_1_db");
ob.setSize(360,360);
ob.setVisible(true);
}
}