Frage

alt text

Ich habe die Entwicklung einer Java / SWT Anwendung geerbt nur unter Windows läuft. Eines der Feature-Anfragen, die ich Umfang benötigen, ist eine Google-Chrom-Typ Titelleiste anstelle der Titelleiste SWT-Fenster. Die Registerkarten der Anwendung auf dem gleichen Niveau wie die Fenstersteuertasten.

Mein Verständnis ist, dass ich müssen:

  • schreiben Sie ein Widget Windows-fähig ist, die Custom-Look-Rendering und Registerkarten im Gegensatz zu Menüs verwalten.
  • Setzen Sie den Windows-Widget als DLL für die Verwendung in Java über JNI
  • einen benutzerdefinierte SWT-Widget schreibt es zu wickeln und auf die Registerkarte Management-Schnittstelle aus.

Ich habe viel Erfahrung mit Java-Programmierung, GUI-Programmierung mit Swing-/ AWT und Nicht-GUI C # -Programmierung. Windows-GUI-Programmierung und SWT sind neu für mich, damit ich bin nicht sicher, wo ich anfangen soll. Das Beste, was ich gefunden habe, so weit ist ein 2001 Artikel auf Ihren eigenen SWT-Widget zu schreiben.

Meine größte Unbekannte ist der beste Weg, um eine benutzerdefinierte Windows-Anwendung-Fenster zu implementieren.

War es hilfreich?

Lösung

Sie können eine Shell-Instanz ohne einen Titel Flagge erstellen und dann Google-Chrom-like Tabs manuell machen. Auf diese Weise können Sie auch eine nicht-rechteckige Fenster erstellen

Andere Tipps

, wenn sie mit Dingen zu tun, die noch nicht in der JNI-Schicht von SWT sind, sollten Sie immer daran denken, dass Sie schnell Prototyp Dinge mit JNA . Wenn der JNA Prototyp, dann können Sie entweder SWT native Schnittstelle erweitern oder eigene separate Schicht JNI erstellen (Dies ist ein Ansatz, der auch einige Male für mich gearbeitet, wenn sie mit SWT Kohlenstoff / Cocoa-Widgets handelt)

Ich empfehle eine Schale ohne Trim Schaffung etwa so:

new Shell (display, SWT.NO_TRIM);

Dies würde eine Schale ohne Titelleiste erstellen. Anschließend können Sie Ihre eigenen schließen / Minimieren / Maximieren Anstecker.

Hier ist ein Beispiel, das einen einsamen Fortschrittsbalken ohne Titelleiste Geschäft laicht.

eingeben Bild Beschreibung hier

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top