2010-05-31 17 views

cevap

19

Bu sınıf test otomasyonu, kendi kendine çalışan demoları ve fare kontrolü ve klavye gereklidir diğer uygulamaların amaçları için yerli sistem giriş etkinliklerini üretmek için kullanılır Robot

kullanmak gerekir. Robot'un temel amacı Java platform uygulamalarının otomatik testini kolaylaştırmaktır.

Girdi olaylarını oluşturmak için sınıfı kullanmak, olayların platformun yerel giriş kuyruğunda üretilmesiyle olayları AWT olay sırasına veya AWT bileşenlerine göndermekten farklıdır. Örneğin, Robot.mouseMove aslında ... sadece üreten fare hareket olayların yerine Robot sınıfını

+0

Harika, teşekkürler: Burada

Eğer herhangi bir nokta merkezli küresel ekran koordinatları geçmesine izin veren bir çözümdür. Tam olarak ihtiyacım olana benziyor. –

1

kontrol fare imlecini dışarı hareket edecektir.

18

Diğerleri söylediler, bu Robot.mouseMove(x,y) kullanılarak elde edilebilir. Bununla birlikte, aksi halde belirtilmedikçe, bu çözüm, çoklu monitör durumunda çalışırken robotun ana ekranın koordinat sistemi ile çalışması nedeniyle bir düşüşe neden olur.

public void moveMouse(Point p) { 
    GraphicsEnvironment ge = 
     GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice[] gs = ge.getScreenDevices(); 

    // Search the devices for the one that draws the specified point. 
    for (GraphicsDevice device: gs) { 
     GraphicsConfiguration[] configurations = 
      device.getConfigurations(); 
     for (GraphicsConfiguration config: configurations) { 
      Rectangle bounds = config.getBounds(); 
      if(bounds.contains(p)) { 
       // Set point to screen coordinates. 
       Point b = bounds.getLocation(); 
       Point s = new Point(p.x - b.x, p.y - b.y); 

       try { 
        Robot r = new Robot(device); 
        r.mouseMove(s.x, s.y); 
       } catch (AWTException e) { 
        e.printStackTrace(); 
       } 

       return; 
      } 
     } 
    } 
    // Couldn't move to the point, it may be off screen. 
    return; 
} 
+0

Linux platformunda çalışır mı? –

+2

@ Daniel - burada yanıtladığınızdan beri yıllar geçti, ancak bugün onu buldum ve metin imlecini yeniden konumlandıran yanlışlıkla fare tıklamaları ile aylardır yaşadığım bir sorunu çözdüm. Ben yorumunuzu okuyana kadar sadece Robot.mouseMove kullanmak cazip oldu. Garip bir şekilde, çok monitörlü bir kurulum kullanmaya yeni başlamıştım! Seninle tanışmadığım sınıfları kullandığından, yapmam gereken tek şey kodunuzu kopyalamak, birkaç ithalat yapmak ve onu aramaktı. Aferin! Teşekkürler!! – DSlomer64

İlgili konular