我的光标后面的Java图像

时间:2014-04-23 10:29:43

标签: java applet awt keylistener mouse-listeners

我想制作类似于光标的东西,(我没有错误) 所以基本上我进入applet后得到坐标,并根据它们绘制我的图像。 这是代码......你能否告诉我哪里错了?谢谢

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class Z_applets extends Applet implements 
        KeyListener, MouseListener, MouseMotionListener {

    int z = 100;
    int t = 100;
    // boolean gigel = true;
    //----------------- Images
    Image image;
    //-----------------
    //----------------- Mouse Coordinates
    Point p = null;
    int x;
    int y;
    //----------------------------------
    Color color = Color.GREEN;

    public void init() {
        addKeyListener(this);
        addMouseListener(this);
    }

    public void paint(Graphics g) {
        setBackground(Color.BLACK);
        g.setColor(color);
        g.drawImage(image, x, y, this);
        g.fillOval(z, t, 15, 15);
    }

    public void update(Graphics g) {
        paint(g);
    }

    public void loadImage() {
//URL url = getClass().getResource("borat.jpg"); 
//image = getToolkit().getImage(url);
        try {
            URL url = new URL(getCodeBase(), "trollface.png");
            System.out.println(getCodeBase());
            image = ImageIO.read(url);
        } catch (IOException e) {
            System.out.println("error" + e.getMessage());
        }
    }

    @Override
    public void keyTyped(KeyEvent ke) {
    }

    @Override
    public void keyPressed(KeyEvent ke) {
        char option;
        option = ke.getKeyChar();
        switch (option) {
            case 'w': {
                t--;
                repaint();
                break;
            }
            case 's': {
                t++;
                repaint();
                break;
            }
            case 'a': {
                z--;
                repaint();
                break;
            }
            case 'd': {
                z++;
                repaint();
                break;
            }
            case '1': {
                color = Color.GREEN;
                break;
            }

            case '2': {
                color = Color.RED;
                break;
            }

            case '3': {
                color = Color.YELLOW;
                break;
            }
//            case 'r':
//            {
//                loadImage();
//                repaint();
//                break;
//            }
        }
    }

    @Override
    public void keyReleased(KeyEvent ke) {
    }

    @Override
    public void mouseClicked(MouseEvent me) {
//    p = me.getPoint();
//    x = p.x;
//    y = p.y;
//    repaint();       
    }

    @Override
    public void mousePressed(MouseEvent me) {
    }

    @Override
    public void mouseReleased(MouseEvent me) {
    }

    @Override
    public void mouseEntered(MouseEvent me) {
        // p=me.getPoint();
        //-------Debug--------
        System.out.println(p);
        System.out.println(p.x);
        System.out.println(p.y);
        //----------------------
        // x = p.x;
        //  y = p.y;
        //  repaint();
    }

    @Override
    public void mouseExited(MouseEvent me) {
    }

    @Override
    public void mouseDragged(MouseEvent me) {
    }

    @Override
    public void mouseMoved(MouseEvent me) {
        p = me.getPoint();
        x = p.x;
        y = p.y;
        repaint();
    }
}

1 个答案:

答案 0 :(得分:1)

我不知道你究竟有什么问题,我认为图像没有被移动。 我认为你没有注册MouseMotionListener所以这样做并实现mouseMoved方法。