有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

小程序Java图像跟随我的光标

我想做一些类似光标的东西,(我没有得到任何错误) 基本上,我一进入小程序就得到了坐标,并根据它们绘制了我的图像。 这是密码。。。你能告诉我哪里错了吗?谢谢

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) 个答案

  1. # 1 楼答案

    在不知道你到底有什么问题的情况下,我想图像没有被移动。 我看您没有注册MouseMotionListener,所以请这样做并实现mouseMoved方法