JDesktopPane no SWT?

Olá pessoal,

Alguém sabe me dizer se existe algum componente parecido com o JDesktopPane no SWT.
Por sempre que tenho que abrir uma “subjanela” eu acabo tendo que criar outro shell.

:slight_smile:

Vc tem que usar a classe decoration

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class DecroationStyles {
  public static void main(String[] args) {
    Display display = new Display();
    Shell composite = new Shell(display);
    composite.setText("Decorations Example");

    composite.setLayout(new GridLayout(3, true));

    // The SWT.BORDER style
    Decorations d = new Decorations(composite, SWT.BORDER);
//    d = new Decorations(composite, SWT.CLOSE);
//    d = new Decorations(composite, SWT.MIN);
//    d = new Decorations(composite, SWT.MAX);
//    d = new Decorations(composite, SWT.NO_TRIM);
//    d = new Decorations(composite, SWT.RESIZE);
//    d = new Decorations(composite, SWT.TITLE);
//    d = new Decorations(composite, SWT.ON_TOP);
//   d = new Decorations(composite, SWT.TOOL);
    
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.BORDER");

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

  }
}

e só definir o style certo
que tem o mesmo efeito

OK, valeu cara,

Mas como eu faço, por exemplo, para abrir e fechar janelas internas como se faz com o JInternalFrame no JDesktopPane em swing?

import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;


public class DecorationsExample {

  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Decorations Example");
    createContents(shell);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }


  public void createContents(Composite composite) {
    // There are nine distinct styles, so create
    // a 3x3 grid
    composite.setLayout(new GridLayout(3, true));

    // The SWT.BORDER style
    Decorations d = new Decorations(composite, SWT.BORDER);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.BORDER");

    // The SWT.CLOSE style
    d = new Decorations(composite, SWT.CLOSE);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.CLOSE");

    // The SWT.MIN style
    d = new Decorations(composite, SWT.MIN);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.MIN");

    // The SWT.MAX style
    d = new Decorations(composite, SWT.MAX);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.MAX");

    // The SWT.NO_TRIM style
    d = new Decorations(composite, SWT.NO_TRIM);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.NO_TRIM");

    // The SWT.RESIZE style
    d = new Decorations(composite, SWT.RESIZE);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.RESIZE");

    // The SWT.TITLE style
    d = new Decorations(composite, SWT.TITLE);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.TITLE");
    // The SWT.ON_TOP style
    d = new Decorations(composite, SWT.ON_TOP);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.ON_TOP");

    // The SWT.TOOL style
    d = new Decorations(composite, SWT.TOOL);
    d.setLayoutData(new GridData(GridData.FILL_BOTH));
    d.setLayout(new FillLayout());
    new Label(d, SWT.CENTER).setText("SWT.TOOL");
  }


  public static void main(String[] args) {
    new DecorationsExample().run();
  }
}

Ahh, entendi!

Valew Cara, muito obrigado!!!