Erstellung eines CLabel als ImageButton

lam_tr

Grünschnabel
Hallo zusammen,

ich möchte gern einen ImageButton erstellen, bei der wenn man auf das Bild geht, dass eine Umrandung des Bildes mit einen Leuchteffekt versehen wird.
Un weiter soll ein Listener ausgelöst werden wenn ich Rechte Maustaste betätige. Mit Mouselistener könn ich es zwar machen, aber dann muss ich es irgendwie auf eine Maustaste beschränken, da man mit links und rechts klicken kann, damit der Listener ausgelöst wird.

Gruss Lam
 
Hallo,

zuerst würde ich mir zwei Images anlegen: ein "default"-Image und eins für MouseOver. An den Button kannst du dann ein Paar Listener anhängen, die dann bei MouseOver bzw. bei MouseOut das entsprechende Image setzen.

Für die rechte Maustaste hängst du einfach einen MouseDown-Listener an, und prüfst, welche Maustaste gedrückt wurde (siehe Code-Beispiel).

Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class ImageButtonTest
{
  public static void main( String[] args )
  {
    Display display = new Display();
    Shell shell = new Shell( display );
    shell.setSize( 300, 200 );
    shell.setLayout( new GridLayout() );

    final Image defaultIcon = new Image( display, "icons/default_icon.gif" );
    final Image hoverIcon = new Image( display, "icons/hover_icon.gif" );
    final CLabel button = new CLabel( shell, SWT.SHADOW_OUT );
    button.setImage( defaultIcon );
    button.addListener( SWT.MouseEnter, new Listener()
    {
      public void handleEvent( Event e )
      {
        button.setImage( hoverIcon );
      }
    } );
    button.addListener( SWT.MouseExit, new Listener()
    {
      public void handleEvent( Event e )
      {
        button.setImage( defaultIcon );
      }
    } );
    button.addListener( SWT.MouseDown, new Listener()
    {
      public void handleEvent( Event event )
      {
        if ( event.button == 3 )
        {
          System.out.println( "rechte Maustaste wurde gedrueckt" );
        }
      }
    } );

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

Grüße
Vincent
 
Zurück