0

私はSWTを使用していますが、希望どおりにレイアウトする際に問題が発生しています。基本的に、Textオブジェクトの幅を、それが配置されているコンポーネントの幅と同じにしたいオブジェクトがあります。使用することはできますFillLayoutが、その下のボタンも大きくなります。これは私が望んでいることではありません。

問題を説明するためのスクリーンショットを次に示します。
ここに画像の説明を入力してください

これが私が再現するために使用しているテストコードであり、問​​題を修正しようとしています:

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.SWTResourceManager;


public class Test {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
        //setup the layout manager      
        GridLayout layout = new GridLayout(1, false);
        layout.horizontalSpacing = 0;
        layout.marginHeight = 0;
        layout.verticalSpacing = 5;
        layout.marginWidth = 0;
        layout.marginBottom = 20;
        layout.marginTop = 5;       

        shell.setLayout(layout);

        //create the text field
        Text inputField = new Text(shell, SWT.BORDER);
        GridData data =  new GridData();
        data.horizontalAlignment = GridData.FILL;
        data.grabExcessHorizontalSpace = true;
        inputField.setData(data);

        //create the button
        Button lookup = new Button(shell, SWT.PUSH);
        lookup.setText("Lookup");       


        shell.pack();
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep();
        }
    }
}

GridDataのオブジェクトに何かを正しく設定していないだけだと思いますinputFieldが、それが何であれ、私は間違いなくそれを見ていません。

4

1 に答える 1

6

notsetLayoutData()を設定するために使用する必要があります:GridDatasetData()

Text inputField = new Text(shell, SWT.BORDER);
GridData data =  new GridData();
data.horizontalAlignment = SWT.FILL;
data.grabExcessHorizontalSpace = true;
inputField.setLayoutData(data);

ところで:の使用はGridData.FILL お勧めSWT.FILLしません、代わりに使用してください。

于 2012-10-03T20:25:54.087 に答える