Pętla while i funkcja getPixelColor();

0

Siema piszę aplikacje która ma co chwile pobierać kolor pixela, gdy umieszczę instrukcję control=rob.getPixelColor(1166,88); w pętli WHILE, wtedy aplikacja w ogóle nie pobiera koloru pixela. Proszę tutaj kod:

(błąd znajduje się na końcu kodu w ActionPerformed)

package bagmover_v20;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Robot;

public class Main {

    public static void main(String[] args) {
        JFrame okno=new JFrame("Aplikacjaxx");
        Panel panel=new Panel();
        okno.getContentPane().add(panel);
        okno.setSize(225,120);
        okno.setResizable(false);
        okno.setDefaultCloseOperation(3);
        okno.setLocationRelativeTo(null);
        okno.setVisible(true);
    }
}
class Panel extends JPanel implements ActionListener {
    int value, posx, posy, key;
    JTextField pole;
    Color control;
    Robot rob;
    boolean action;
    public Panel(){
        control= null;
        setBackground(Color.black);
        JLabel l1=new JLabel("Aplikacjaxx");
        l1.setForeground(Color.red);
        JLabel l2=new JLabel("Value:");
        l2.setForeground(Color.green);
        pole=new JTextField(3);
        JLabel l3=new JLabel("                        ");
        JButton up=new JButton("UP");
        up.addActionListener(this);
        JButton down=new JButton("DOWN");
        JButton left=new JButton("LEFT");
        JButton right=new JButton("RIGHT");
        add(l1);
       
        add(l2);
        add(pole);
        add(up);
        add(l3);
        add(left);
        add(down);
        add(right);

    }

    public void actionPerformed(ActionEvent e) {
        action=true;
        value=Integer.parseInt(pole.getText().trim());
        posx=551;
        posy=387;
        key=KeyEvent.VK_UP;
        go1();
        while(action){
        go2();
        }
       
        }
   
   
    public void go1(){
        try {
            rob = new Robot();
            rob.delay(1000);
            rob.mouseMove(500,1);
            rob.mousePress(InputEvent.BUTTON1_MASK);
            rob.mouseRelease(InputEvent.BUTTON1_MASK);
        } catch (AWTException ex) {}
    }
      public void go2(){
      try {
           rob = new Robot();
           control=rob.getPixelColor(1166,88);
           this.setBackground(control);
           this.repaint();

           } catch (AWTException ex) {}
           if(control==Color.orange){
              action=false;
       }
    }
}

Za pomoc wielkie dzięki :)

0

żeby działo musisz umieścić to w osobnym wątku.

albo wywal to while.

0

Dzięki udalo sie umiescilem w watku i tam wrzucilem petle while i zaczelo dzialac jak chcialem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1