簡體   English   中英

Java:在鼠標cursor下打印當前像素的顏色到控制台:鼠標監聽器不起作用

[英]Java: printing the color of the current pixel under mouse cursor to console: mouse listener doesn't work

我正在嘗試在鼠標移動事件中打印當前像素的顏色。 我有這個代碼:

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();
        }
    }
}

但它什么也沒做。

每當調用mouseMoved時,都不需要調用mouseDragged

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM