Java:将鼠标光标下的当前像素的颜色打印到控制台:鼠标侦听器不起作用

问题描述 投票:-2回答:1

我正在尝试在鼠标移动事件时打印当前像素的颜色。我有此代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class PixelWizard extends JFrame   {
    public PixelWizard()  {
        addMouseMotionListener(new MouseListenerImpl());
        setVisible(true);

    }

    public static void main(String[] args) {
        PixelWizard pixelWizard = new PixelWizard();
    }
}

class MouseListenerImpl   implements MouseMotionListener {
    @Override
    public void mouseMoved(MouseEvent e)  {
        System.out.println("moved event");
        mouseDragged(e);
    }

    @Override
     public void mouseDragged(MouseEvent e)  {
        try {
            Robot robot = new Robot();
            robot.delay(2000);

            Point coord = MouseInfo.getPointerInfo().getLocation();
            Color color = robot.getPixelColor((int) coord.getX(), (int) coord.getX());
            String hex = String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
            System.out.println(hex);

         }
        catch (Exception ex)  {
            ex.printStackTrace();
        }
    }
}

但是它什么也没做。

java swing awt mouselistener
1个回答
0
投票

[每次调用mouseDragged时都不需要调用mouseMoved

class MouseListenerImpl  implements MouseMotionListener {

    private Robot robot;

    MouseListenerImpl() {
        try {
            robot = new Robot(); //construct a robot once 
        } catch (AWTException ex) {
            ex.printStackTrace();
        }
    }
    @Override
    public void mouseMoved(MouseEvent e)  {
        printColor(e);
    }

    @Override
    public void mouseDragged(MouseEvent e)  {
        printColor(e);
    }

    private void printColor(MouseEvent e) {
        Color color = robot.getPixelColor(e.getX(), e.getY());
        String hex = String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
        System.out.println(hex);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.