如何在SWT中将复合分割成不同的空间

时间:2014-07-25 16:01:19

标签: java layout swt

我在SWT中创建了一个日志查看器,我遇到了一个需要显示mainText和detailedText的问题。我希望mainText只有25%或可用空间,detailText应该有75%的可用空间。所以我继续尝试在swt mention here中学习布局管理器。看起来SWT对我来说没有任何相应的布局管理器。我目前正在使用FillLayout,它只是将复合材料潜入相同的空间。有什么方法可以根据我的方便划分空间。

public class LogViewer{
 Text mainText;
 Text detailText;
 public void initialize(Composite parent){
  parent.setLayout(new FillLayout(SWT.VERTICAL));
  mainText = new Text( parent, SWT.WRAP | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
  detailText = new Text( parent, SWT.WRAP | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
  mainText.setVisible( true );
  detailText.setVisible( true );
  mainText.setText("This is the error message");
  detailText.setText("This text is mulitline error text message")
 }
}

这就是消息出现的方式

enter image description here

这就是我想要的方式

enter image description here

有人可以帮助我并引导我朝着正确的方向前进。提前谢谢。

1 个答案:

答案 0 :(得分:2)

我真诚地感谢greg-449。他的评论使之成为可能。他建议我使用org.eclipse.swt.custom.SashForm,它完美无缺。再次感谢SO。这是我更新的代码。

public class LogViewer{
 Text mainText;
 Text detailText;
 public void initialize(Composite parent){
  parent.setLayout(new FillLayout(SWT.VERTICAL));
  SashForm sashForm =new SashForm(parent, SWT.VERTICAL);
  mainText = new Text( sashForm , SWT.WRAP | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
  detailText = new Text( sashForm , SWT.WRAP | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
  mainText.setVisible( true );
  detailText.setVisible( true );
  sashForm.setWeights(new int[]{1,3});
  mainText.setText("This is the error message");
  detailText.setText("This text is mulitline error text message")
 }
}