ここに私の問題があります。私はSWTを使ってEclise Plugin用の小さなGUIを構築しています。下の写真では、部品1,2,2 '、3,3'は私が望むのと全く同じように動作し、ウィンドウに正しく収まります。SWTコンポーネント(TextMergeViewer)のサイズを変更できません
はしかし、(TextMergeViewerである)第四の部分は、そのコンテナの隅に、それはほとんどのサイズを保持します。
次のコードは、どのように、例えば、私は部品2と2' を定義しています示しています
Composite viewersContainer;
viewersContainer = new Composite(shell, SWT.BORDER);
viewersContainer.setLayout(new GridLayout(2, false));
viewersContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.heightHint = 400;
data.widthHint = 400;
oldFileViewer = new Browser(viewersContainer, SWT.BORDER);
oldFileViewer.setText("here is the old file viewer\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n");
oldFileViewer.setLayoutData(data);
newFileViewer = new Browser(viewersContainer, SWT.BORDER);
newFileViewer.setText("and here is the new file viewer\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n");
newFileViewer.setLayoutData(data);
私は第四の部分を作成しながら、次のコードを使用して、そのモデルを維持しようとした:
Composite c = new Composite(shell, SWT.BORDER);
c.setLayout(new GridLayout(1, false));
GridData l = new GridData(SWT.FILL, SWT.FILL, false, false);
c.setLayoutData(l);
TextMergeViewerCreator tmvc = new TextMergeViewerCreator();
TextMergeViewer tmv = null;
tmv = (TextMergeViewer) tmvc.createViewer(c, new CompareConfiguration());
DiffNode d = null;
try {
d = (DiffNode) (new CompareInput().prepareInput(new IProgressMonitor() {
//Some overrided methods
}
}));
} catch (InvocationTargetException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
d.setDontExpand(false);
tmv.setInput(d);
DiffNodeはTextMergeViewerファイルの責任を負いませんが、私のコードで何が間違っているのかはわかりません。 ご協力いただければ幸いです! 読んでいただきありがとうございます。
TextMergeViewerには 'setLayoutData'メソッドがありません。 – MedAl
@MedAl' getControl() 'の結果で呼び出すようにしてください。 – Baz