Domanda

alt text

Ho ereditato lo sviluppo di un'applicazione Java / SWT solo su Windows. Una delle richieste di funzionalità che ho bisogno di ambito è una barra del titolo di tipo Google Chrome al posto della barra del titolo di Windows SWT. Le schede dell'applicazione appaiono allo stesso livello dei pulsanti di controllo della finestra.

La mia comprensione è che dovrò:

  • scrivi un widget di Windows in grado di rendere l'aspetto personalizzato e gestire le schede al contrario dei menu.
  • espone il widget di Windows come dll da utilizzare in Java tramite JNI
  • scrivi un widget SWT personalizzato per racchiuderlo ed esporre l'interfaccia di gestione delle schede.

Ho molta esperienza con la programmazione Java, la programmazione GUI con Swing / AWT e la programmazione C # non GUI. La programmazione della GUI di Windows e SWT sono nuovi per me, quindi non sono sicuro da dove iniziare. Il migliore che ho trovato finora è un articolo del 2001 su scrivendo il tuo widget SWT .

Il mio più grande sconosciuto è il modo migliore per implementare una finestra personalizzata dell'applicazione Windows.

È stato utile?

Soluzione

È possibile creare un'istanza Shell senza un flag TITLE e quindi visualizzare manualmente le schede simili a Google Chrome. In questo modo puoi persino creare una finestre non rettangolari

Altri suggerimenti

quando hai a che fare con cose che non sono ancora nel livello JNI di SWT, dovresti sempre ricordare che puoi prototipare rapidamente le cose con JNA . Quando si utilizza il prototipo JNA, è possibile estendere l'interfaccia nativa di SWT o creare il proprio livello JNI separato (questo è un approccio che ha funzionato bene per me diverse volte quando si tratta di widget SWT Carbon / Cocoa)

Consiglio di creare una shell senza un Trim in questo modo:

new Shell (display, SWT.NO_TRIM);

Questo creerebbe una shell senza la barra del titolo. Successivamente puoi creare i tuoi pulsanti Chiudi / Riduci / Ingrandisci.

Ecco un esempio che genera una barra di avanzamento solitaria senza l'attività della barra del titolo.

inserisci qui la descrizione dell'immagine

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;

public class ProgressBarGui {

    Display display;
    Shell shell;

    public static void main (String [] args) {
        final Display display = new Display ();
        final Shell shell = new Shell (display, SWT.NO_TRIM);


        //Something to put into shell.
        shell.setLayout (new FormLayout ());

        ProgressBar proBar = new ProgressBar (shell, SWT.SMOOTH);
        proBar.setSelection (50);
        FormData progBarData = new FormData (100, 20);
        progBarData.top = new FormAttachment (0);
        progBarData.left = new FormAttachment (0);
        proBar.setLayoutData (progBarData);

        //recompute shell's size and position to fit widget.
        shell.pack ();

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top