[英]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.