質問

alt text

Windowsでのみ実行されるJava / SWTアプリケーションの開発を継承しました。スコープを設定する必要がある機能要求の1つは、SWTウィンドウのタイトルバーの代わりにGoogleクロームタイプのタイトルバーです。アプリケーションのタブは、ウィンドウコントロールボタンと同じレベルに表示されます。

私の理解では:

  • カスタムルックをレンダリングし、メニューではなくタブを管理できるWindowsウィジェットを作成します。
  • WindowsウィジェットをJNI経由でJavaで使用するdllとして公開する
  • カスタムSWTウィジェットを記述してラップし、タブ管理インターフェースを公開します。

私は、Javaプログラミング、Swing / AWTを使用したGUIプログラミング、および非GUI C#プログラミングの経験が豊富です。 Windows GUIプログラミングとSWTは初めてなので、どこから始めればよいかわかりません。私がこれまでに見つけた最高のものは、2001年の独自のSWTウィジェットの作成

最大の未知数は、カスタムWindowsアプリケーションウィンドウを実装する最良の方法です。

役に立ちましたか?

解決

TITLEフラグなしでシェルインスタンスを作成し、Googleクロームのようなタブを手動でレンダリングできます。このようにして、非矩形ウィンドウを作成することもできます。

他のヒント

SWTのJNIレイヤーにまだないものを扱うときは、 JNA 。 JNAプロトタイプを作成する場合、SWTのネイティブインターフェイスを拡張するか、独自のJNIレイヤーを作成できます(これは、SWT Carbon / Cocoaウィジェットを扱うときに何度もうまく機能するアプローチです)

次のようなトリムなしでシェルを作成することをお勧めします:

new Shell (display, SWT.NO_TRIM);

これにより、タイトルバーのないシェルが作成されます。その後、独自の閉じる/最小化/最大化ボタンを作成できます。

これは、タイトルバービジネスなしで単独のプログレスバーを生成する例です。

ここに画像の説明を入力

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