Pregunta

texto alternativo ??

He heredado el desarrollo de una aplicación Java / SWT que se ejecuta solo en Windows. Una de las solicitudes de funciones que necesito abarcar es una barra de título de tipo Google Chrome en lugar de la barra de título de las ventanas SWT. Las pestañas de la aplicación aparecen al mismo nivel que los botones de control de la ventana.

Entiendo que tendré que:

  • escriba un widget de Windows capaz de representar el aspecto personalizado y administrar pestañas en lugar de menús.
  • expone el widget de Windows como un dll para usar en Java a través de JNI
  • escriba un widget SWT personalizado para envolverlo y exponer la interfaz de administración de pestañas.

Tengo mucha experiencia con programación Java, programación GUI con Swing / AWT y programación C # sin GUI. La programación de la GUI de Windows y SWT son nuevos para mí, así que no estoy seguro de por dónde empezar. Lo mejor que he encontrado hasta ahora es un artículo de 2001 sobre escribiendo su propio widget SWT .

Mi mayor desconocimiento es la mejor manera de implementar una ventana de aplicación de Windows personalizada.

¿Fue útil?

Solución

Puede crear una instancia de Shell sin un indicador de TÍTULO y luego renderizar manualmente las pestañas similares a Google Chrome. De esta forma, incluso puede crear una ventanas no rectangulares

Otros consejos

cuando se trata de cosas que aún no están en la capa JNI de SWT, siempre debe recordar que puede crear prototipos rápidamente con JNA . Cuando se utiliza el prototipo JNA, puede ampliar la interfaz nativa de SWT o crear su propia capa JNI separada (este es un enfoque que funcionó bien para mí varias veces cuando se trata de widgets SWT Carbon / Cocoa)

Recomiendo crear un shell sin un Trim así:

new Shell (display, SWT.NO_TRIM);

Esto crearía un shell sin la barra de título. Posteriormente puede hacer sus propios botones de cerrar / minimizar / maximizar.

Aquí hay un ejemplo que genera una barra de progreso solitaria sin el negocio de la barra de título.

ingrese la descripción de la imagen aquí

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

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top