Pergunta

text alt

Eu herdei desenvolvimento de uma aplicação Java / SWT correr apenas no Windows. Uma das solicitações de recursos que eu preciso escopo é uma barra de título-cromo do tipo Google no lugar da barra de título janelas SWT. guias do aplicativo aparecem no mesmo nível que os botões de controle de janela.

O meu entendimento é que eu vou precisar:

  • escrever uma WINDOWS Widget susceptíveis de tornar a aparência personalizada e gerenciamento de abas ao invés de menus.
  • expor do Windows widget como uma dll para uso em Java via JNI
  • escrever uma SWT costume widget para envolvê-la e expor a interface de gerenciamento guia.

Eu tenho muita experiência com programação Java, programação GUI com Swing / AWT, e não-GUI programação C #. Janelas GUI programação e SWT é novo para mim, então eu não tenho certeza por onde começar. O melhor que eu encontrei até agora é um artigo de 2001 sobre escrever o seu próprio SWT Widget .

Meu maior incógnita é a melhor maneira de implementar uma-janela do aplicativo personalizado do Windows.

Foi útil?

Solução

Você pode criar uma instância de Shell, sem uma bandeira TITLE e depois processar Google-cromo-como guias manualmente. Desta forma, você pode até criar uma janelas não-retangulares

Outras dicas

quando se lida com as coisas que ainda não estão na camada JNI da SWT, você deve sempre lembrar que você pode protótipo rapidamente as coisas com JNA . Quando o protótipo JNA, então você pode estender a interface nativa do SWT ou criar a sua própria camada JNI separado (Esta é uma abordagem que funcionou bem para mim várias vezes quando se lida com widgets SWT Carbono / Cacau)

Eu recomendo criar um shell sem uma guarnição assim:

new Shell (display, SWT.NO_TRIM);

Isso criaria uma concha sem a barra de título. Posteriormente você pode fazer seus próprios fechar / minimizar / maximizar botões.

Aqui está um exemplo que gera uma barra de progresso solitário sem o negócio de barra de título.

enter descrição da imagem aqui

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top