MouseListener auf Bild legen ?

Status
Nicht offen für weitere Antworten.

Art1977

Mitglied
Ich habe mir folgendes Icon auf meine shell "gemalt"
wie kann ich darauf nun nen Listener legen, das ich quasi den Bereich als "Button" verwenden kann?

Code:
ImageData playData = new ImageData("PlayButton.gif"); 
        final Image playImage = new Image(display, playData); 
 
        shell.addPaintListener(new PaintListener(){ 
        public void paintControl(PaintEvent e) { 
           e.gc.drawImage(playImage, 220, 454);           
           
        }
     
     });
 

L-ectron-X

Gesperrter Benutzer
Lege doch das Bild gleich auf einen JButton, oder auf ein JLabel, daran kann man z.B. den ActionListener bzw. MouseListener registrieren.
Beispielcode findet sich hier im Forum. :arrow: Suche
 

Art1977

Mitglied
Das Problem ist aber dabei

Code:
Image playImage = new Image(shell.getDisplay(),"PlayButton2.gif");
        play.setImage(playImage); 
        play.pack(); 
        play.setLocation(220, 454);     
        play.addListener(SWT.Selection, new Listener() 
        { 
           public void handleEvent(Event e) 
           { 
              shell.close(); 
           } 
        } 
        );

Hier bei Play siehst du das Problem, wenn ichs über nen Button mache!

ButtonProblem.jpg


Ich finde einfach keine gute Lösung für das Problem hat jemand ne Idee.....
[/img]
 
R

Roar

Gast
huhu, er benutzt swt da is nix mit JButtons oder JLabels

@art: füg doch einfach das tsprechende swt konstrukt für einen mouselistener deiner shell hinzu und überprüfe wo geklickt weurde jenachdem kannste dann reasgieren.
 

Art1977

Mitglied
@SebiB90

wie Roar schon sagt, ich benutze SWT und wollte eigentlich kein AWT und Swing verwenden


@Roar
kannste mir mal kurz sagen, wie du das meinst ? Ich bekomm es nciht auf die Reihe nen bestimmten Bereich von meiner Shell zu definieren auf den ich den Mouselistener setzten kann. Ich schaff das nur auf die gesamte Shell, aber das bringt mir ja nix, zu mal ich das Bild ja quasi auf die Shell "gezeichnet" habe. Ich kann zumindest kein Listener auf nen Image setzten, das funktioniert auch nicht. :-(.

Kannste mal kurz nen beispiel sagen, wie du das meinst ?
 
R

Roar

Gast
nimm doch ein (swt) Label, papp da dein Image drauf (setImage()) und füg einen MouseListener hinzu. wenn du da nmoch buttonartige effekte draufmachen willst auchnoch nen MouseTrackListener wo du dann andere rahmen oder so drummalen kannst...
 

Art1977

Mitglied
Jo @roar, genau das habe ich eben probiert. funktioniert einwandfrei, nun mal sehen, ob ich die labels ineinander "nesten" kann.
 

Art1977

Mitglied
Also Labels ineinandersetzten klapptschonmal nicht, jetzt kann ich zwar nen keylistener auf meine Controls legen, aber immernoch nur auf das gesamte label, kann ich da irgendwie innerhalb bereiche für den listener definieren?
 
R

Roar

Gast
Art1977 hat gesagt.:
Also Labels ineinandersetzten klapptschonmal nicht, jetzt kann ich zwar nen keylistener auf meine Controls legen, aber immernoch nur auf das gesamte label, kann ich da irgendwie innerhalb bereiche für den listener definieren?
öhh das kapier ich nich, wie meinst du das "ineinander nesten" ? du kansnt ein label nicht auf ein andere setzen. in ein Panel kannst du mehrere labels setzen.
 

Art1977

Mitglied
Nun du siehst ja oben das bild von der bisherigen GUI.

Ich will halt nun den gemalten Buttons, quasi funktionen hinzufügen. Also da wo der PlayButton sitzt soll er abspielen usw....

Wenn ich jeweils die nen Label in nen Label hätte setzten könne, könnte ich für jeden einzelnen nen eigenen MouseListener benutzen. Das geht aber halt leider nicht.

Nun hab ich nen Label drübergelegt und nen bild reingesetzt und so hingeschoben, dass es immernoch so aussieht, als wäre es der eine button. Ich müsste aber jetzt irgendwie innerhalb des Labels Bereiche definieren, die dann die entsprechende Funktion auslösen. Aber ich habe null plan, wie man das machen könnte.

ich poste mal schnell hier den code von der gui klasse.

Code:
package de.fulda.mmprog.audio.gui;

import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.PaintEvent; 
import org.eclipse.swt.events.PaintListener; 
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image; 
import org.eclipse.swt.graphics.ImageData; 
import org.eclipse.swt.graphics.Point; 
import org.eclipse.swt.graphics.Rectangle; 
import org.eclipse.swt.graphics.Region; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;

import de.fulda.mmprog.audio.controller.Controller;

public class AlternativeGUI { 
    
    private Controller myctrl;
	private Table table;
	private String filen;
    
    static int[] circle(int r, int offsetX, int offsetY) 
     { 
        int[] polygon = new int[8 * r + 4]; 
        //x^2 + y^2 = r^2 
        for (int i = 0; i < 2 * r + 1; i++) { 
           int x = i - r; 
           int y = (int)Math.sqrt(r*r - x*x); 
           polygon[2*i] = offsetX + x; 
           polygon[2*i+1] = offsetY + y; 
           polygon[8*r - 2*i - 2] = offsetX + x; 
           polygon[8*r - 2*i - 1] = offsetY - y; 
        } 
        return polygon; 
     } 
      
   public void open() {
        final Display display = new Display(); 
        //Shell must be created with style SWT.NO_TRIM 
        final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP ); 
        shell.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); 
        //define a region 
        Region region = new Region(); 
    
        //Anfang ist oben links die Ecke 
        region.add(new int[]{238, 0, 785, 0, 800, 15, 800, 455, 785 ,470 
                            , 785, 526, 765, 545, 290, 545, 270, 525 
                            , 270, 510, 185, 495, 146, 513,  90, 416 
                            , 118, 389, 241, 6}); 
        region.add(circle(222, 233, 225)); 
        region.add(circle(75, 77, 485)); 
        region.add(circle(75, 236, 460)); 
        region.add(circle(15, 785, 15));//rechts Oben, runde Ecke 
        region.add(circle(15, 785, 455)); 
        region.add(circle(15, 770, 530)); 
        
        /*  So kann man noch Flächen rausschneiden
        region.subtract(new int[]{80, 50, 55, 105, 79, 105}); 
        region.subtract(circle(60, 100, 150)); 
        */ 
        
        //define the shape of the shell using setRegion 
        shell.setRegion(region); 
        Rectangle size = region.getBounds(); 
        shell.setSize(size.width, size.height); 
        //shell.setSize(800,600); 
  
         ImageData data = new ImageData("Skin2.jpg"); 
         final Image i = new Image(display, data); 
  
         shell.addPaintListener(new PaintListener()
         { 
         public void paintControl(PaintEvent e) 
         { 
            e.gc.drawImage(i, 0, 0);           
         } 
          
         }); 
       
        //add ability to move shell around 
        Listener l = new Listener() 
        { 
           Point origin; 
           public void handleEvent(Event e) 
           { 
              switch (e.type) 
              { 
                 case SWT.MouseDown: 
                    origin = new Point(e.x, e.y); 
                    break; 
                 case SWT.MouseUp: 
                    origin = null; 
                    break; 
                 case SWT.MouseMove: 
                    if (origin != null) 
                    { 
                       Point p = display.map(shell, null, e.x, e.y); 
                       shell.setLocation(p.x - origin.x, p.y - origin.y); 
                    } 
                    break; 
              } 
           } 
        }; 
        shell.addListener(SWT.MouseDown, l); 
        shell.addListener(SWT.MouseUp, l); 
        shell.addListener(SWT.MouseMove, l);   
        
        Button exit = new Button(shell, SWT.FLAT | SWT.PUSH); 
        exit.setBackground(shell.getBackground()); 
        exit.setText("X"); 
        exit.pack(); 
        exit.setLocation(769, 9); 
        exit.addListener(SWT.Selection, new Listener() 
        { 
           public void handleEvent(Event e) 
           { 
              shell.close(); 
           } 
        } 
        ); 
      
        
        /*
        Button play = new Button(shell, SWT.PUSH | SWT.FLAT | SWT.NO_BACKGROUND);
        Image playImage = new Image(shell.getDisplay(),"PlayButton2.gif");
        play.setImage(playImage); 
        play.pack(); 
        play.setLocation(220, 454);     
        play.addListener(SWT.Selection, new Listener() 
        { 
           public void handleEvent(Event e) 
           { 
              shell.close(); 
           } 
        } 
        ); 
       */
        
        
        // ButtonGIF wird an die Stelle gezeichnet, hat mir aber auch nicht 
        /* weiter geholfen
        ImageData playData = new ImageData("PlayButton2.gif"); 
        final Image playImage = new Image(display, playData); 
 
        shell.addPaintListener(new PaintListener(){ 
        public void paintControl(PaintEvent e) { 
           e.gc.drawImage(playImage, 220, 454);           
           
        }
     
     }); */
        
        
        Group group1 = new Group(shell,SWT.NO_TRIM );
        group1.setBounds(30,440,90,90);
        group1.setText("Volume");
         
        
        //HintergrundLabel für den Controller 
        ImageData controlData = new ImageData("Controller.gif");
        final Image controllerImage = new Image(display, controlData); 
        Label controlLabel = new Label(shell,SWT.FLAT);
        //controlLabel.setBounds(300,420,94,94);
        controlLabel.setBounds(188,424,92,92);
        controlLabel.setImage(controllerImage);
        
        /*
        controlLabel.addMouseListener(MouseListener l)
        
       
        
        
        
           shell.open(); 
        

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

}
 

Art1977

Mitglied
Ich sage jetzt mal lieber nichts dazu, hab den wald vor lauter bäumen nicht gesehen!

Ich habe jetzte einfach 5 labels gemacht, alle 20*19 groß und einfach auf den controller gelegt. Darauf dann das bild des entsprechenden buttons.

Nun die nächste Frage, wenn ich da meinen listener drauflege, funktioniert der immer nur mit nem Doppelklick, ich denke beim ersten mal wird registriert, dass ich mich im label befinde, beim 2. klick wird der event ausgelöst.

Was muss ich tun, damit das auch mit einem klick funktioniert ?

Code:
playLabel.addListener(SWT.PUSH, new Listener() 
                { 
                   public void handleEvent(Event e) 
                   {          
                      myctrl.playsound();
                   } 
                   
                  
                } 
                );
 
R

Roar

Gast
eifnach einen MouseListener auf das Label setzen:

Code:
playLabel.addMouseListener(new org.eclipse.swt.events.MouseListener() {
     public void mouseDown(..)
 .....
});
 
J

JFun

Gast
Hallo, wie macht man solche Skins, mit GUI- Builder oder muss man alles von Hand programmieren ?

Danke
 
G

Gast

Gast
Hi Leute

wie kann ich Audio und Video auf mein GUI abspielen ?

wie kann ich mediaplayer mit meiner GUI einbinden

eure Gast

merci milles fois.))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Mit MouseListener X-Y Angaben vom Bild erfahren AWT, Swing, JavaFX & SWT 3
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
U MouselIstener zu JFrame AWT, Swing, JavaFX & SWT 6
F Swing MouseListener im JPanel AWT, Swing, JavaFX & SWT 3
J Swing Button mit JTable und MouseListener AWT, Swing, JavaFX & SWT 8
F JPanel + MouseListener AWT, Swing, JavaFX & SWT 5
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
A SWT SWT Scale und MouseListener AWT, Swing, JavaFX & SWT 7
J MouseListener und rechte Maustaste AWT, Swing, JavaFX & SWT 3
R MouseListener auf JPanel AWT, Swing, JavaFX & SWT 3
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
J Swing Einbau MouseListener in JPanel AWT, Swing, JavaFX & SWT 3
T MouseListener an Ecken von Polygonen hinzufügen AWT, Swing, JavaFX & SWT 5
H Swing JPanel in JTable mit MouseListener AWT, Swing, JavaFX & SWT 3
A Individueller MouseListener ? AWT, Swing, JavaFX & SWT 7
B MouseListener im Renderer einer JComboBox AWT, Swing, JavaFX & SWT 3
P AWT MouseListener unklare abhandlung von Events AWT, Swing, JavaFX & SWT 3
M MouseListener/MouseMotionListener AWT, Swing, JavaFX & SWT 2
njans SWT MouseListener exited AWT, Swing, JavaFX & SWT 4
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
U Swing Generierung mehrerer Kreise per MouseListener AWT, Swing, JavaFX & SWT 16
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
C JTappedPane Mouselistener auf Überschrift Registerkarte AWT, Swing, JavaFX & SWT 2
M MouseListener AWT, Swing, JavaFX & SWT 3
K AWT MouseListener linke und rechte Maustaste AWT, Swing, JavaFX & SWT 5
C Swing MouseListener Doppelklick-Geschwindigkeit AWT, Swing, JavaFX & SWT 4
N Swing MouseListener in JTable AWT, Swing, JavaFX & SWT 4
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
R MouseListener wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
P JComboBox und MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
raptorrs Swing MouseListener reagiert nicht auf Instanz einer JTable AWT, Swing, JavaFX & SWT 6
multiholle Swing Mouselistener auf Parentpanel immer aktiv AWT, Swing, JavaFX & SWT 7
C MouseListener und ActionListener kombinieren AWT, Swing, JavaFX & SWT 17
M Komponenten einer unbestimmten Anzahl und MouseListener AWT, Swing, JavaFX & SWT 4
A MouseListener funktionert nie AWT, Swing, JavaFX & SWT 12
C Probleme mit Größe und mit MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener für jede Zelle einer JTable AWT, Swing, JavaFX & SWT 4
E MouseListener Problem AWT, Swing, JavaFX & SWT 4
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
S MouseListener zurückverfolgung auf element. AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
hdi Wie mach ich diesen MouseListener AWT, Swing, JavaFX & SWT 4
G MouseListener & KeyListener AWT, Swing, JavaFX & SWT 4
H JComboBox reagiert nicht auf MouseListener AWT, Swing, JavaFX & SWT 5
2 Mouselistener AWT, Swing, JavaFX & SWT 2
W MouseListener, getClickCount und Doppelklick AWT, Swing, JavaFX & SWT 6
S swing komponenten mit mouselistener rotieren AWT, Swing, JavaFX & SWT 15
G JFrame,JLabel,MouseListener AWT, Swing, JavaFX & SWT 6
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
V Frage zu MouseListener --> mousePressed() AWT, Swing, JavaFX & SWT 5
C MouseListener für Spalte eines JTables AWT, Swing, JavaFX & SWT 4
K Problem mit 2 MouseListener. AWT, Swing, JavaFX & SWT 3
M MouseMotionListener oder mouseListener AWT, Swing, JavaFX & SWT 6
T JComboBox und MouseListener AWT, Swing, JavaFX & SWT 11
F MouseListener - Unhandled IOException AWT, Swing, JavaFX & SWT 5
padde479 Statusleiste mit MouseListener aktualisieren AWT, Swing, JavaFX & SWT 3
L Problem mit MouseListener, AdjustmentListener AWT, Swing, JavaFX & SWT 6
T MouseListener Problem AWT, Swing, JavaFX & SWT 3
F Mouselistener wird wiederholt aufgerufen AWT, Swing, JavaFX & SWT 3
G Frage zu MouseListener und speichern des Wertes (reflektion? AWT, Swing, JavaFX & SWT 6
B frage zu MouseListener AWT, Swing, JavaFX & SWT 5
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
W JPanel, JLabel und MouseListener -> auf clicks reagieren AWT, Swing, JavaFX & SWT 5
S MouseListener auf einem einzelnen Tab setzen AWT, Swing, JavaFX & SWT 3
B MouseListener & Fenster schliessen AWT, Swing, JavaFX & SWT 3
G MouseListener AWT, Swing, JavaFX & SWT 4
G Tooltip sperrt MouseListener? AWT, Swing, JavaFX & SWT 6
S JComboBox und MouseListener AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
A Klassenübergreifend MouseListener verwenden AWT, Swing, JavaFX & SWT 14
N "globaler" MouseListener (+MouseMotionListener) AWT, Swing, JavaFX & SWT 4
M ToolTipText für JTable mit MouseListener ohne anklicken? AWT, Swing, JavaFX & SWT 7
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J MouseListener AWT, Swing, JavaFX & SWT 3
A JPanels in JPanel und MouseListener AWT, Swing, JavaFX & SWT 3
C Mehrere MouseListener? AWT, Swing, JavaFX & SWT 7
U Keylistener und Mouselistener AWT, Swing, JavaFX & SWT 2
L Event-handling, MouseListener AWT, Swing, JavaFX & SWT 5
T Problem mit MouseListener bei JButton AWT, Swing, JavaFX & SWT 5
K mein keyListener scheint Konflict haben mit mouseListener AWT, Swing, JavaFX & SWT 6
G Problem mit MouseListener AWT, Swing, JavaFX & SWT 9
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben