2011-07-27 10 views
0

どのようにすればよいか、またはより大きなコンポジットの中に小さなコンポジットを配置することができますか? たとえば、小さいコンポジットを大きなコンポジットの中央に表示し、大きなコンポジットでボタンを押すと、小さなコンポジットに画像が表示されますか?コンポジット内のコンポジット

あなたのご協力を非常にうれしく思います。 Ann。

答えて

1

私はあなたの質問を理解すれば、私はこのような何かを意味するか分からないのですか?

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(); 
    } 
} 

ボタンの配置、それはなど、サイズのレイアウトマネージャのちょうど適切な設定ですが、私は存在MigLayoutとしてIMO最高のレイアウトマネージャをお勧めします。

関連する問題