Mausklicks innerhalb eines JFrames/SWTBrowser ohne richtige Maus simulieren

Shevrar

Mitglied
In dem BrowserExample von SWT soll mein Programm eigenständig auf bestimmte Bereiche innerhalb des Browsers klicken,
ich weiß mit der Klasse Robot wäre dies möglich einfach die Maus an Position x y zu bewegen und dann ein Klick zu erzeugen,
aber mein Problem ist das die "richtige" Maus nicht verwendet werden soll (der Benutzer soll weiterhin damit irgendwas anderes machen können).
Das heißt im Prinzip soll das Programm eine eigene Maus haben die auch wenn das Fenster minimiert ist immer noch seine Klicks ausführt innerhalb des Fensters

ich hoffe ihr habt meine Problematik verstanden, was ich meine :D


hier nochmal der Code vom BrowserExample von SWT
Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
 
public class SWTBrowserExample {
    
    private Shell shell = null;
    private Browser browser = null;
    
    private static final String url = "www.Youtube.de";
    private static final String title = "SWTBrowserExample";
    
    public static void main(String[] args) {
        Display display = new Display();
        SWTBrowserExample browser = new SWTBrowserExample();
        browser.createBrowser();
        browser.shell.open();
        
        while (!browser.shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }           
        }
        display.dispose();
    }
    
    private void createBrowser() {      
        shell = new Shell();
        shell.setLayout(new FillLayout());
        shell.setSize(new Point(800, 800));
        shell.setLocation(new Point(100, 100));
        shell.setText(title);
        
        browser = new Browser(shell, SWT.BORDER);
        browser.setUrl(url);
    }
    
}
 

Ruzmanz

Top Contributor
Programmiere deine Applikation für die normale Maus. Indem du die "dispatch"-Methoden von deinem Fenster nutzt, kannst du beliebige MouseEvents verschicken. So würde man in AWT simulieren, dass die linke Maustaste an einer beliebigen Stelle gedrückt wird:

Java:
Component component = window.findComponentAt((int) getX(), (int) getY());
window.dispatchEvent(new MouseEvent(component, MouseEvent.MOUSE_PRESSED, System
	.currentTimeMillis(), MouseEvent.BUTTON1_DOWN_MASK, (int) getX(),
	(int) getY(), 0, false, MouseEvent.BUTTON1));
 

Shevrar

Mitglied
Danke für die Antwort trotzdem hab ich jezt noch ein Problem.

Ich hab mittlerweile meinen SWT Browser in ein JFrame eingefügt.
somit müsste doch dein "window" mein JFrame sein oder ?
nun sagt aber wenn ich window durch mein JFrame ersetze, Eclipse das es folgendes wenn ich auf
das rot unterstrichene dispatchEvent gehe : "The method dispatchEvent(AWTEvent) in the type Component is not applicable for the arguments (MouseEvent)"

Anbei nochmal mein aktueller code

Java:
import java.awt.AWTException;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Robot;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseWheelListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;

public class BrowserSwingPanel implements Runnable{
	Browser browser;
	JFrame f;
	 Robot r;
	 Display display;
	  Shell shell ;
	 
   public static void main(String args[]) {
	   BrowserSwingPanel bp;
	   bp=new BrowserSwingPanel();	  
	   bp.starte();
   }
   
   void starte (){
	      f = new JFrame();
	      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      f.setUndecorated(true);
	      Canvas canvas = new Canvas();
	      f.setSize(1070, 810);	     
	      f.add(canvas);
	      f.setVisible(true);
	      display = new Display();
	      shell = SWT_AWT.new_Shell(display, canvas);
	      shell.setSize(1070, 810);
	      browser = new Browser(shell, SWT.NO_SCROLL);
	      browser.setSize(1070, 810);
	      browser.setUrl("www.Youtube.de");     
	      shell.open();
	      
	     
	      try {
			r=new Robot();
		} catch (AWTException e) {			
			e.printStackTrace();
		}
	      
	    
	     Thread t;
	     t=new Thread(this);
	     t.start();
	     
	  
	     while (!shell.isDisposed()) {	
	         if (!display.readAndDispatch())
	            display.sleep(); 
	      } display.dispose();
	      f.dispose();
	     
	   
   }
   
  
   
public void run() {
	
	
	
	
    Component component = f.findComponentAt((int) f.getX(), (int) f.getY());
    f.dispatchEvent(new MouseEvent(component, MouseEvent.MOUSE_PRESSED, System
        .currentTimeMillis(), MouseEvent.BUTTON1_DOWN_MASK, (int) f.getX(),
        (int) f.getY(), 0, false, MouseEvent.BUTTON1));
	
 
       
}
   
  
}
 

Ruzmanz

Top Contributor
Das liegt daran, dass du den MouseEvent von SWT importiert hast und nicht vom AWT-Package. Für gewöhnlich ist es auch eher unüblich AWT, Swing und SWT zu mischen. Wenn du einen SWT Browser hast, dann solltest du deine Applikation komplett in SWT entwickeln.
 

Shevrar

Mitglied
Wenn ich mein JFrame zb. mit nem JButton bestücke funktioniert es, aber bei Websiten die ich mit dem SWTBrowser anzeige wie z.B Youtube Funktioniert dies leider nicht :-(
 

Ruzmanz

Top Contributor
Wie ich bereits gesagt habe, wird das auch nicht funktionieren. Schau dir die SWT-API an. Dort gibt es auch ein MouseEvent. Das musst du benutzten, um mit deinem SWT-Browser kommunizieren zu können. Das in AWT war lediglich ein Beispiel.

PS: Das ist unter anderem ein guter Grund AWT und SWT nicht zu mischen.
 

Shevrar

Mitglied
Gibt es den auch in AWT eine möglichkeit einfach einen Browser darzustellen , so wie bei SWT ? oder
wie müsste ich das den bei SWT mit dem Mouseevent machen hab bis jezt erst diese Methode
für swt gefunden aber da bewegt muss ich dann auch wieder vorher meine Maus dorthin bewegen.


Java:
  event.type = SWT.MouseDown;
       event.button = 1;
       display.post(event);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
astro151 JButtons mit Mausklicks bewegen Spiele- und Multimedia-Programmierung 2
K Click innerhalb eines 45° gekippten Rechtecks Spiele- und Multimedia-Programmierung 9
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
N Bildposition innerhalb eines anderen Bildes ermitteln Spiele- und Multimedia-Programmierung 2
N Seltsame Exception bei Code eines Spiele-Tutorials Spiele- und Multimedia-Programmierung 6
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
E Programmierung eines 2.5D Point&Click Adventures ohne Spieleengine machbar? Spiele- und Multimedia-Programmierung 14
J LibGdx_3D: Klamotten eines Charakters modifizieren Spiele- und Multimedia-Programmierung 2
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
M Programmierung eines "Fantasy Rollenspiels" Spiele- und Multimedia-Programmierung 5
E Laufanimation eines Sprites Spiele- und Multimedia-Programmierung 6
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
M bewegen eines Objektes Spiele- und Multimedia-Programmierung 2
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
X "Rebuffen" - Messen der Zeit eines Timers Spiele- und Multimedia-Programmierung 3
S Design eines Schachspiels Spiele- und Multimedia-Programmierung 3
F Programmierung eines Bots Spiele- und Multimedia-Programmierung 23
A Wann ist ein Punkt inerhalb eines Polygons? Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
R Drehen eines Bildes relativ zur Mauszeigerposition Spiele- und Multimedia-Programmierung 2
M Pattern zur Auswahl eines Objektes anhand vieler Kriterien Spiele- und Multimedia-Programmierung 2
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
R Triangulation eines komplexen Polygons Spiele- und Multimedia-Programmierung 4
L Lwjgl Darstellung eines Kreises im Raum Spiele- und Multimedia-Programmierung 3
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
G Rotieren eines Objekts (2D) Spiele- und Multimedia-Programmierung 8
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
S Umfang eines Polygons erzeugen Spiele- und Multimedia-Programmierung 1
D Highscoreliste eines Applets funktioniert online nicht Spiele- und Multimedia-Programmierung 4
W CannotRealizeException (jmf) beim abspielen eines liedes Spiele- und Multimedia-Programmierung 3
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
D Koordinaten eines 2D Sprites Spiele- und Multimedia-Programmierung 2
B Teile eines Bildes laden - BitBlk und drawImage Spiele- und Multimedia-Programmierung 3
S Interpolation eines Bildes Spiele- und Multimedia-Programmierung 6
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
G rotation eines würfels Spiele- und Multimedia-Programmierung 9
G Bewegung eines Grafikobjektes Spiele- und Multimedia-Programmierung 7
A Programmieren eines Bruchrechners Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
J Rotieren eines 2D Images endet in Java heap space Error Spiele- und Multimedia-Programmierung 15
W Affine Transformation, Rotieren eines Objekts Spiele- und Multimedia-Programmierung 2
S fließende/bewegende Striche eines Auswahlrechtecks Spiele- und Multimedia-Programmierung 9
A Bounds eines gedrehten Objekts berechnen Spiele- und Multimedia-Programmierung 30
T Erstellen eines ausdruckbaren Formulars Spiele- und Multimedia-Programmierung 5
T Umsetzung eines 2D Jump and Runs Spiele- und Multimedia-Programmierung 7
T Brightness eines Bildes [DRINGEND] Spiele- und Multimedia-Programmierung 2
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
ARadauer Grauwerte eines jpg ermitteln Spiele- und Multimedia-Programmierung 4
A Anzeigen eines Grapfen Spiele- und Multimedia-Programmierung 13
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
S Problem bzgl. Umsetzung eines Rollenspiel Spiele- und Multimedia-Programmierung 6
M Ausschneiden eines Bereichs / Avatar Spiele- und Multimedia-Programmierung 2
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
M Frage eines Anfängers Spiele- und Multimedia-Programmierung 3
DEvent [2D] Farbe bestimmten Pixels eines Bildes ändern Spiele- und Multimedia-Programmierung 3
V Wie berechnet man das Bild eines Schwarzen Loches in Java? Spiele- und Multimedia-Programmierung 10
G Breite eines Strings Spiele- und Multimedia-Programmierung 2
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
N Grafik als Hintergrund eines Rechtecks verwenden? Spiele- und Multimedia-Programmierung 4
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
T Java2D Spiel, beim Hinzufügen eines Bildes ruckelt das ganze Spiele- und Multimedia-Programmierung 3
F Position eines Objektes auslesen. Spiele- und Multimedia-Programmierung 7
W Rotation eines Objektes Spiele- und Multimedia-Programmierung 2
M Zerschneiden eines Bildes mit Wellenlinien? Spiele- und Multimedia-Programmierung 2
S Simulation in der Art eines Schachbrett Spiele- und Multimedia-Programmierung 2
A 2-Achsen Rotation eines Würfels Spiele- und Multimedia-Programmierung 4
L nicht sichtbare Kanten eines Würfels Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben