5

そこで、タイトル領域に配置する画像を作成しています。画像の 1/4 しか表示されないことを除いて、すべてが機能しますか?

私の画像は実際にはテキストであり、画像は1つの画像に結合されていますEX:JKTeater [] <--アイコンなので、現在JKTのみがタイトル領域に表示されています

ここに create() メソッドがあります

public void create() {
  super.create();
  setTitle("JKTeater Application");
  setMessage("Hello World");
  if (image != null) setTitleImage(image);

}
  1. タイトル エリア コー​​ドが許可する特定のサイズはありますか?
  2. 画像の最後をタイトル領域の最後に配置する方法はありますか?
  3. レイアウトを使用して移動できますか?
  4. タイトル領域の下部に黒い水平線を表示するにはどうすればよいですか?

編集

ここに画像の説明を入力

背景色を基本色からグラデーションに実際に変更できるかどうかを確認するには、多くのことが求められると確信しています

4

1 に答える 1

5

ここに例がありますTitleAreaDialog。ご覧のとおり、Imageは完全に表示され、右に揃えられています。

public static void main(String[] args) {
    final Shell shell = new Shell();
    shell.setLayout(new FillLayout());

    TitleAreaDialog dialog = new MyTitleAreaDialog(shell);
    dialog.setTitleAreaColor(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND).getRGB());
    dialog.open();
}

private static class MyTitleAreaDialog extends TitleAreaDialog
{
    private Image image;

    public MyTitleAreaDialog(Shell parentShell) {
        super(parentShell);
        image = new Image(Display.getDefault(), "/home/baz/Desktop/StackOverflow.png");
    }

    @Override
    public boolean close() {
        if (image != null)
            image.dispose();
        return super.close();
    }

    @Override
    protected Control createContents(Composite parent) {
        Control contents = super.createContents(parent);

        setTitle("Title");
        setMessage("Message");

        if (image != null)
            setTitleImage(image);

        return contents;
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Composite composite = (Composite) super.createDialogArea(parent);

        // YOUR LINE HERE!
        Label line = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
        line.setLayoutData(new GridData(SWT.FILL, SWT.END, true, true));

        return composite;
    }
}

ここに画像の説明を入力

タイトル エリア コー​​ドが許可する特定のサイズはありますか?

私の知る限り、サイズに制限はありません。Image画面解像度よりも大きいを使用してみましたが、完全に表示されました。Dialog明らかに使い物にならなかったけど。

背景色を基本色からグラデーションに実際に変更できるかどうかを確認するには、多くのことが求められると確信しています

背景色はdialog.setTitleAreaColor(RGB)(この場合はウィジェットの背景色) を使用して変更できますが、グラデーションは使用できません。getTitleArea()title area を返す非推奨のメソッドがありますが、Compositeそれを使用することはお勧めしません。

タイトル領域の下部に黒い水平線を表示するにはどうすればよいですか?

一番下の行は、次を使用して実現されました。

Label line = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
line.setLayoutData(new GridData(SWT.FILL, SWT.END, true, true));

レイアウトを使用して移動できますか?

ここに同様の質問があります:

TitleAreaDialog の画像を左に移動する

そこの回答は、の詳細を変更する方法を説明していTitleAreaDialogます。多分それらを読んでください。

于 2012-10-19T14:48:14.190 に答える