首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實現螢幕取色器:AWT Robot 實戰範例

     編輯:Java 相關知識

利用 java.awt.Robot 與 MouseInfo 即可即時擷取滑鼠指標下的螢幕像素顏色。本文提供兩個完整範例:主控台輸出版與 Swing GUI 即時顯示版(含背景色同步與十六進位顏色碼顯示)。

範例 1:主控台單次取色

import java.awt.*;

public class PickColor {
    public static void main(String[] args) {
        PickColor pc = new PickColor();
        Color color = pc.pickColor();
        System.out.println("color = " + color);
    }

    public Color pickColor() {
        try {
            Robot robot = new Robot();
            Point pt = MouseInfo.getPointerInfo().getLocation();
            return robot.getPixelColor(pt.x, pt.y);
        } catch (AWTException e) {
            e.printStackTrace();
            System.exit(1);
            return null;
        }
    }
}

範例 2:Swing GUI 即時取色器

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

public class PickColor2 extends JFrame {
    public static void main(String[] args) { new PickColor2(); }

    public PickColor2() {
        super("Pick Color");
        setSize(200, 200);
        JPanel panel = new JPanel();
        getContentPane().add(panel);

        // 滑鼠移動監聽(僅限 Java 視窗內)
        panel.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent e) {
                panel.setBackground(pickColor());
            }
        });

        // 獨立執行緒:全螢幕輪詢(含螢幕座標)
        new Thread(() -> {
            while (true) {
                try { Thread.sleep(10); } catch (InterruptedException ignored) {}
                Color c = pickColor();
                panel.setBackground(c);
                Graphics g = panel.getGraphics();
                if (g != null) {
                    g.setColor((c.getRed() <= 50 || c.getGreen() <= 50 || c.getBlue() <= 50) ? Color.WHITE : Color.BLACK);
                    g.drawString(c.toString(), 0, 100);
                }
            }
        }).start();

        setVisible(true);
    }

    private Color pickColor() {
        try {
            Robot robot = new Robot();
            Point pt = MouseInfo.getPointerInfo().getLocation();
            return robot.getPixelColor(pt.x, pt.y);
        } catch (AWTException e) {
            e.printStackTrace();
            System.exit(1);
            return Color.BLACK;
        }
    }
}

關鍵 API 對照

類別/方法用途
Robot.getPixelColor(x, y)擷取螢幕指定座標像素顏色
MouseInfo.getPointerInfo().getLocation()取得滑鼠指標螢幕絕對座標
Color.getRed()/getGreen()/getBlue()取得 RGB 分量 (0-255)

注意: 需 JVM 支援 Robot(Headless 環境不可用),且需適當權限存取螢幕像素。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved