ここに例があります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
ます。多分それらを読んでください。