Как реализовать строку заголовка, похожую на Google-chrome, для приложения Java SWT

StackOverflow https://stackoverflow.com/questions/1632842

Вопрос

alt text

Я унаследовал разработку приложения Java / SWT, работающего только в Windows.Один из запросов функции, который мне нужно включить, - это строка заголовка типа Google-chrome вместо строки заголовка SWT Windows.Вкладки приложения отображаются на том же уровне, что и кнопки управления окном.

Насколько я понимаю, мне нужно будет:

  • напишите виджет Windows, способный отображать пользовательский внешний вид и управлять вкладками в отличие от меню.
  • предоставьте виджет Windows в виде библиотеки dll для использования в Java через JNI
  • напишите пользовательский SWT-виджет, чтобы обернуть его и открыть интерфейс управления вкладками.

У меня большой опыт программирования на Java, программирования с графическим интерфейсом на Swing / AWT и программирования на C # без графического интерфейса.Программирование графического интерфейса Windows и SWT для меня в новинку, поэтому я не уверен, с чего начать.Лучшее, что я нашел на данный момент, - это статья 2001 года о написание вашего собственного виджета SWT.

Мое самое большое неизвестное - это лучший способ реализовать пользовательское окно приложения Windows.

Это было полезно?

Решение

Вы можете создать экземпляр оболочки без флага ЗАГОЛОВКА, а затем вручную отобразить вкладки, похожие на Google Chrome.Таким образом, вы даже можете создать окна непрямоугольной формы

Другие советы

при работе с вещами, которые еще не находятся на уровне JNI SWT, вы всегда должны помнить, что вы можете быстро создавать прототипы с ЮНА.Когда прототип JNA, вы можете либо расширить собственный интерфейс SWT, либо создать свой собственный отдельный слой JNI (этот подход несколько раз хорошо срабатывал у меня при работе с виджетами SWT Carbon / Cocoa)

Я рекомендую создать оболочку без отделки следующим образом:

new Shell (display, SWT.NO_TRIM);

Это создало бы оболочку без строки заголовка.Впоследствии вы можете создать свои собственные кнопки закрытия / сворачивания / разворачивания.

Вот пример, который порождает одинокий индикатор выполнения без заголовка business.

enter image description here

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

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top