0

ダイアログに新しいコンポジットを追加しようとしています。シンプルなボタンを作成していて、ダイアログに配置したいと考えています。最初に、ボタン領域を作成するメソッドを作成しました。このメソッドは、単純なボタンを作成するメソッドを呼び出しています。新しいボタンがダイアログに表示されません。

ここに完全なコードがあります

public class AplotBaseDialog extends TitleAreaDialog {

   private TCSession session= null;
   public AplotBaseDialog(Shell parentShell, TCSession theSession) {
       super(parentShell);
       session = theSession;
   }

   @Override
   protected Control createDialogArea(Composite parent) {
   Composite composite = (Composite) super.createDialogArea(parent);
   GridLayout layout = new GridLayout();
   layout.numColumns = 1;
   composite.setLayout(layout);

   // The text fields will grow with the size of the dialog
   GridData gridData = new GridData();
   gridData.grabExcessHorizontalSpace = true;
   gridData.horizontalAlignment = GridData.BEGINNING;
   Label label1 = new Label(composite, SWT.NONE);
   label1.setText("First Name");
   label1.setLayoutData(gridData);

   gridData = new GridData();
   gridData.grabExcessHorizontalSpace = true;
   gridData.horizontalAlignment = GridData.CENTER;
   Label label2 = new Label(composite, SWT.NONE);
   label2.setText("Last Name");
   label2.setLayoutData(gridData);

   gridData = new GridData();
   gridData.grabExcessHorizontalSpace = true;
   gridData.horizontalAlignment = GridData.END;
   Button button1 = new Button(composite, SWT.PUSH);
   button1.setText("Button 5");
   button1.setLayoutData(gridData);

   return composite;
}

protected void createButtonArea(Composite parent){
  GridData gridData = new GridData();
  gridData.horizontalAlignment = SWT.CENTER;
  parent.setLayoutData(gridData);
  createOkButton(parent);

 }
 protected Button createOkButton(Composite parent) {
  // increment the number of columns in the button bar
  ((GridLayout) parent.getLayout()).numColumns++;
  Button button = new Button(parent, SWT.PUSH);
  button.setText("Test Button");
  setButtonLayoutData(button);
  return button;
 }
}

テスト ボタンがダイアログに表示されないのはなぜですか?

このようなことは SWT/Jface でも可能ですか? 希望のダイアログ レイアウト

誰かがダイアログのようなことをするメソッドのレイアウトを見せてもらえますか?

4

1 に答える 1

1

createButtonArea()実際にメソッドをオーバーライドするために作成したメソッドの代わりに、よりクリーンになるかもしれませんcreateButtonsForButtonBar。より SWT フレンドリーになります。

/**
 * Create contents of the button bar.
 * @param parent
 */
@Override
protected void createButtonsForButtonBar(Composite parent) {
    createButton(parent, IDialogConstants.OK_ID, "Test Button",
            true);
    createButton(parent, IDialogConstants.CANCEL_ID,
            IDialogConstants.CANCEL_LABEL, false);
}
于 2012-08-24T15:59:07.763 に答える