java里面的frame panel applet 如果不用布局管理器的话..直接用坐标定位组件或者用paint()画图
坐标都是十分混乱的..有哪位高手可以详细讲解一下

解决方案 »

  1.   

    不会混乱的吧。不要Layout只是繁琐罢了。算来算去的。
      

  2.   

    因为想做个雷电小游戏..不能定死在那吖..
    Applet设置了大小。。
    paint()里面getSize().width/height获得大小
    但是屏幕中间的width就变成了真正的Applet的宽了..
    import java.applet.*;
    import java.awt.*;
    import java.awt.geom.*;
    import java.util.*;
    import java.awt.event.*;import javax.swing.ImageIcon;
    public class ImageTest extends Applet implements KeyListener{
    private Image img;
    private int imgW;
    private int imgH;
    private ImageIcon icon;
    private int moveH;
    private int moveW;
    private int Width;
    private int Height;
    public void init(){
    java.net.URL BaseURL=getCodeBase();
    //img=getImage(BaseURL,"e:\\kira java\\HitPlane\\pic\\hero.gif");
    icon=new ImageIcon("e:\\kira java\\HitPlane\\pic\\hero.gif");
    img=icon.getImage();
    imgW=img.getWidth(null);
    imgH=img.getHeight(null);
    System.out.println(imgW+" "+imgH);

    setSize(500,600);
    addKeyListener(this);
    Width=getSize().height;
    Height=getSize().width;
    moveH=getSize().height;
    moveW=getSize().width;
    }
        public void paint(Graphics g){
         Graphics2D g2=(Graphics2D)g;
         final AffineTransform identity=new AffineTransform();
         AffineTransform at=new AffineTransform();
         at.setTransform(identity);
        
         g2.drawImage(img,moveW/2-imgW/2 ,moveH-imgH,this);
        }
    @Override
    public void keyPressed(KeyEvent arg0) {
    // TODO Auto-generated method stub
    int keyCode=arg0.getKeyCode();
    if (keyCode==KeyEvent.VK_UP){
    this.moveH-=5;
    if(moveH<=0) moveH=0;
    repaint();
    }
    else if (keyCode==KeyEvent.VK_DOWN){
    this.moveH+=5;
    if(moveH>=600-imgH) moveH=600;
    repaint();
    }
    else if (keyCode==KeyEvent.VK_LEFT){
    this.moveW-=10;
    if(moveW<=0) moveW=imgW/2;
    repaint();
    }
    else if (keyCode==KeyEvent.VK_RIGHT){
    this.moveW+=10;
    if(moveW>=Width) moveW=Width;
    repaint();
    }

    }
    @Override
    public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

    }
    @Override
    public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

    }
    }
      

  3.   

    将增量设为10,然后计算定位的时候/2,最后也得到5的实际增量,这没问题。
    但是if(moveW>=Width) moveW=Width;这句是用真实的width值来约束位置,画的时候g2.drawImage(img,moveW/2-imgW/2 ,moveH-imgH,this);当然就是以width/2为限制了。
      

  4.   

    你得到的鼠标坐标,必须进行transform转换为屏幕坐标
    更详细的解释参见Java 2D advance image API