2011-07-27 2 views
0

Est-ce que quelqu'un sait comment ou si vous pouvez placer un composite plus petit dans un composite plus grand. Par exemple je veux que le plus petit composite soit au centre du grand composite et visible et quand un bouton est pressé dans le plus grand composite une image apparaît dans le plus petit composite?composite dans un composite

Serait extrêmement heureux de votre aide. Ann.

Répondre

1

Je ne suis pas sûr si je comprends votre question, vous vouliez dire quelque chose comme ça ..?

import java.net.URL; 

import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.PaintEvent; 
import org.eclipse.swt.events.PaintListener; 
import org.eclipse.swt.events.SelectionAdapter; 
import org.eclipse.swt.events.SelectionEvent; 
import org.eclipse.swt.graphics.Image; 
import org.eclipse.swt.layout.FillLayout; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 

public class CompositeInComposite { 

    private Display display = null; 
    private Shell shell = null; 
    private Composite composite = null; 
    private Image img = null; 
    private URL dog = null; 
    private URL cat = null; 

    public CompositeInComposite() { 
     display = new Display(); 
     shell = new Shell(display); 
     shell.setLayout(new FillLayout(SWT.VERTICAL)); 
     shell.setSize(300, 300); 

     Button btn = new Button(shell, SWT.PUSH); 
     btn.setText("show cat"); 
     btn.addSelectionListener(new SelectionAdapter() { 

      @Override 
      public void widgetSelected(SelectionEvent e) { 
       try { 
        img = new Image(display, cat.openStream()); 
        composite.redraw(); 
       } catch(Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 

     }); 

     try { 
      cat = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Collage_of_Six_Cats-02.jpg/250px-Collage_of_Six_Cats-02.jpg"); 
      dog = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg"); 
      img = new Image(display, dog.openStream()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     composite = new Composite(shell, SWT.BORDER); 
     composite.addPaintListener(new PaintListener() { 

      @Override 
      public void paintControl(PaintEvent e) { 
       e.gc.drawImage(img, 0, 0); 
      } 
     }); 

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

    public static void main(String[] args) { 
     new CompositeInComposite(); 
    } 
} 

L'alignement du bouton, sa taille, etc. est juste une bonne configuration du gestionnaire de mise en page, je recommanderais MigLayout comme meilleur gestionnaire de mise en page de l'OMI qui existe.