java.awt.robot przekazanie kliknięcia na przeźroczystym panelu

0

Cześć.

Mam pewien kłopot mianowicie chciałem sobie śledzić klikanie myszką na ekranie. Idąc za przykładami z internetu (również z forum) zrobiłem sobie przeźroczystego Frama-a i klasą Robot próbuję przekazać kliknięcie. udaje się na debugerze natomiast podczas normalnego działania już nie bardzo. Może ktoś mi wytłumaczy dlaczego

pozdrawiam



import java.awt.AWTException;
import static java.awt.Frame.MAXIMIZED_BOTH;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import java.awt.Robot;
import java.awt.event.InputEvent;
/**
 *
 * @author w.maciejewski
 */
public class JKlasa extends JFrame implements MouseListener {
private int licz=0;
Robot robot ;

public JKlasa() throws AWTException{
    this.setExtendedState(MAXIMIZED_BOTH);  
    this.setUndecorated(true);
    this.setVisible(true);
    this.setOpacity(0.01f);
   
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    addMouseListener(this);
    robot = new Robot();
}
    @Override
    public void mouseClicked(MouseEvent me) {
        licz+=1;
        System.out.println(licz);
        
    }

    @Override
    public void mousePressed(MouseEvent me) {
        System.out.println("nacisk");
        this.setVisible(false);
        if(me.getButton()==3){
        robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
        }
       
        else{
         
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        }
        
       this.setVisible(true);
     
    }

    @Override
    public void mouseReleased(MouseEvent me) {
        System.out.println("puszczenie");
     /*    this.setVisible(false);
         if(me.getButton()==3)
        robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
        else
          robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        this.setVisible(true);
        */
    }

    @Override
    public void mouseEntered(MouseEvent me) {
        
    }

    @Override
    public void mouseExited(MouseEvent me) {
        
    }
    
}

1

A jak stwierdziłeś, że nie działa? Ja dodałem do klasy JKlasa

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

uruchomiłem (z ręki, bez żadnego IDE) i działa.

0

dobra uruchamiałem to spod netbeans-a i wtedy się nie wykonywało kliknięcie, mogę faktycznie spróbować z konsoli odpalić i zobaczyć co się będzie działo :)

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