Avatar billede lazy_warrior Nybegynder
23. november 2005 - 14:48 Der er 5 kommentarer og
1 løsning

Åbne flere vinduer i SWT

Hejsa
Jeg har leget en lille smule med SWT, og det er et ok alternativ til Swing.
Mit problem er at jeg ikke kan gennemskue hvordan man åbner flere vinduer. Så vidt jeg kan se, så "sidder programmet fast" i den while lykke der lytter efter om vinduet bliver vist.

Jeg vil gerne åbne 2 uafhængive vinduer fra samme program. Det er altså ikke et vindue der åbner et andet vindue. men programmet der åbner flere vinduer (skal være et vilkårligt antal), uden at de "låser for hinanden".

Håber noget har bedre forstand på SWT end jeg har :)
Avatar billede Slettet bruger
24. november 2005 - 19:14 #1
Jeg skal lave et eksempel til dig, men du bliver nødt til at vente et par timer - jeg har lige et par børn der skal i seng først :-)
Avatar billede Slettet bruger
24. november 2005 - 21:23 #2
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class DialogShell {

  public DialogShell() {
    Display display = new Display();
    final Shell shell = new Shell(display);

    shell.setLayout(new RowLayout());
    shell.setSize(500, 200);

    final Button openDialog = new Button(shell, SWT.PUSH);
    openDialog.setText("Click here to rate this book ...");

    openDialog.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        final Shell dialog =
          new Shell(shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
        dialog.setLayout(new RowLayout());

        final String[] ratings =
          new String[] {
            "Killer!",
            "Good stuff",
            "So-so",
            "Needs work" };
        final Button[] radios = new Button[ratings.length];
        for (int i = 0; i < ratings.length; i++) {
          radios[i] = new Button(dialog, SWT.RADIO);
          radios[i].setText(ratings[i]);
        }

        Button rateButton = new Button(dialog, SWT.PUSH);
        rateButton.setText("Rate!");
        rateButton.addSelectionListener(new SelectionListener() {
          public void widgetSelected(SelectionEvent e) {
            for (int i = 0; i < radios.length; i++)
              if (radios[i].getSelection())
                openDialog.setText("Rating: " + ratings[i]);
            dialog.close();
          }

          public void widgetDefaultSelected(SelectionEvent e) {
          }
        });

        dialog.pack();
        dialog.open();

        // Move the dialog to the center of the top level shell.
        Rectangle shellBounds = shell.getBounds();
        Point dialogSize = dialog.getSize();

        dialog.setLocation(
          shellBounds.x + (shellBounds.width - dialogSize.x) / 2,
          shellBounds.y + (shellBounds.height - dialogSize.y) / 2);

      }

      public void widgetDefaultSelected(SelectionEvent e) {
      }
    });

    shell.open();

    // Set up the event loop.
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        // If no more entries in event queue
        display.sleep();
      }
    }

    display.dispose();
  }

  private void init() {

  }

  public static void main(String[] args) {
    new DialogShell();
  }
}
Avatar billede Slettet bruger
24. november 2005 - 21:24 #3
Lad mig vide hvis der er noget du er i tvivl om
Avatar billede Slettet bruger
23. januar 2006 - 09:42 #4
Eller hvis du ikke har haft tid til at kigge på det, så luk i det mindste spørgsmålet
Avatar billede lazy_warrior Nybegynder
24. januar 2006 - 17:26 #5
Sorry at jeg ikke har svaret. Dette hjemmeprojekt har der slet ikke været tid til.

Umiddelbart tror jeg at det vil virke.
Hvis du ligger et svar så får du de points nu du har ventet på svar.
Avatar billede lazy_warrior Nybegynder
18. august 2010 - 13:08 #6
Svar for at lukke opgaven.
Maximus, du får gerne points, men du har ikke lagt et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester