Как я могу показать положение мыши X & Y, когда мышь движется с Graphics2D? - PullRequest
0 голосов
/ 27 сентября 2019

Как я могу показать положение мыши X & Y, когда мышь движется с Graphics2D?

Я пытаюсь показать координаты, когда мышь движется, но я могу сделать это с System.out.println, я имею в виду использование drawString.join ("", 10, 5).

Как мне тогда достичь этого?

* Вот что я сделал

public class Bell2 extends JPanel {
    static JFrame frame=new JFrame();


    public Bell() {

    }

     public void paint(Graphics g){
            Graphics2D g2=(Graphics2D)g;
            g2.setColor(Color.yellow);
            //Here's where I struggle
            g2.drawString.join ("mouseX, mouseY, C");


     }
    public static void main(String[] args) {

        frame.setSize(500,300);
        frame.setLocation(300,200);
        frame.setVisible(true);
        frame.setBackground(Color.black);

         Robot robot = null;
            try {
                robot = new Robot();
            } catch (AWTException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              Color c = robot.getPixelColor(456,141);


        double mouseY=1.0;
        double mouseX=1.0;
        while(mouseX !=0 || mouseY  !=0) {

            mouseX = MouseInfo.getPointerInfo().getLocation().getX();
             mouseY = MouseInfo.getPointerInfo().getLocation().getY();

             System.out.println("x: "+mouseX+" y: "+mouseY+" c: "+c);

        }

    }

}

1 Ответ

0 голосов
/ 27 сентября 2019

Не уверен, что это именно то, что вы ищете, но, в качестве альтернативы, вы можете подумать о том, чтобы сделать что-то вроде этого, если вы хотите оставаться достаточно близко к исходному примеру:

    public static void main(String[] args) {
        frame.setSize(500,300);
        frame.setLocation(300,200);
        frame.setVisible(true);
        frame.setBackground(Color.black);

        try {
            final Robot robot = new Robot();
            handleMouse(robot);
        } catch (final AWTException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private static void handleMouse(final Robot robot) {
        int mouseX = 1;
        int mouseY = 1;
        while (mouseX !=0 || mouseY !=0) {
            final Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
            mouseX = mouseLocation.x;
            mouseY = mouseLocation.y;
            final Color currentColor = robot.getPixelColor(mouseX, mouseY);
            System.out.println(String.format("x: %d, y: %d, c: %s", mouseX, mouseY, currentColor));
        }
    }

ПримечаниеcurrentColor обновляется каждый раз, когда mouseX и mouseY;это было не так в вашем исходном фрагменте.

Еще одна вещь, на которую следует обратить внимание, если вы смотрите вывод на терминале - цвет будет изменяться только в том случае, если mouseX и mouseY остаются <= 255;за пределами этого значения вы, скорее всего, увидите только этот вывод: </p>

java.awt.Color[r=255,g=255,b=255]
...