2016-09-21 5 views
-2

Ich habe die Schnipsel-Klasse. Wie man die folgende Schleife durch Mausklick-Ereignis unterbricht?Wie man die Schleife bei Mausklick Ereignis

public class Sample { 

    private static Label label; 

    public static void main(String[] args) {   
     Display display = new Display(); 
     Shell shell = new Shell(display); 
     shell.setLayout(new FillLayout()); 
     shell.setBounds(100, 100, 200, 70); 
     Button button = new Button(shell, SWT.NONE); 
     button.setText("Go"); 
     button.addListener(SWT.Selection, new Listener(){ 
      @Override 
      public void handleEvent(Event arg0) { 
       while (true) { 
        int x = MouseInfo.getPointerInfo().getLocation().x; 
        int y = MouseInfo.getPointerInfo().getLocation().y; 
        label.setText(x + ":" + y); 
       } 
      }}); 
     label = new Label(shell, SWT.NONE); 
     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) display.sleep(); 
     } 
     display.dispose(); 
    } 
} 
+1

Was wollen Sie überhaupt erreichen? – Baz

+0

Ich möchte auf die angegebene Textbox klicken, die sich auf der externen Anwendung befindet und dann die Schleife suppte. Ich möchte mich an den Ort des angeklickten Textfelds erinnern (x, y). – ks099

+0

Woher wissen Sie, wenn auf ein Textfeld in einer externen Anwendung geklickt wurde? – Baz

Antwort

0

Ich habe was ich wollte. Danke Baz für Ihre Hilfe.

public class Sample { 

private static Label label; 

public static void main(String[] args) {   
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 
    shell.setBounds(100, 100, 200, 70); 
    Button button = new Button(shell, SWT.NONE); 
    button.setText("Go"); 
    button.addListener(SWT.Selection, new Listener(){ 
     @Override 
     public void handleEvent(Event arg0) { 
      Shell screenShell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP); 
      screenShell.setMaximized(true); 
      screenShell.setBackground(display.getSystemColor(SWT.COLOR_GRAY)); 
      screenShell.setAlpha(120); 
      screenShell.addListener(SWT.MouseDown, new Listener() { 
       @Override 
       public void handleEvent(Event event) { 
        screenShell.close();       
       }}); 
      screenShell.open(); 
      Display.getCurrent().timerExec(10, new Runnable(){ 
       @Override 
       public void run() { 
        if (!screenShell.isDisposed()) { 
         int x = MouseInfo.getPointerInfo().getLocation().x; 
         int y = MouseInfo.getPointerInfo().getLocation().y; 
         label.setText(x + ":" + y); 
         Display.getCurrent().timerExec(10, this); 
        } 
       }});  
     }}); 

    label = new Label(shell, SWT.NONE); 
    shell.open(); 

    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) display.sleep(); 
    } 
    display.dispose(); 
} 
Verwandte Themen