【问题标题】:Adjusting the Cell-Size of a GridLayout - Drawing Multiple Canvases?调整 GridLayout 的单元格大小 - 绘制多个画布?
【发布时间】:2011-12-28 15:34:05
【问题描述】:

我需要在 Eclipse rcp 中的 Scrollable Composite 上绘制多个画布,并将它们放在一个网格布局中。我设法实现了这一点,但我坚持调整 GridLayouts Cell-Size。

我想要的是让网格动态调整每个画布的大小(或至少手动设置大小),但让 GridLayout 填充父组件的完整空间。

到目前为止我所拥有的:

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

    shell.setLayout(new FillLayout());

    final ScrolledComposite sComp = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL);
    final Composite fillComp = new Composite(sComp, SWT.NONE);

    GridLayoutFactory.createFrom(new GridLayout(10, true)).applyTo(fillComp);

    for (int i = 0; i < 500; i++) {
      final Canvas c = new Canvas(fillComp, SWT.DOUBLE_BUFFERED);
      c.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent e) {
          e.gc.setBackground(display.getSystemColor(new Random().nextInt(20)));
          e.gc.fillRectangle(0, 0, 200, 200);
        }
      });
    }

    sComp.setContent(fillComp);

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

我认为将父组件的布局设置为 FillLayout 可以解决问题,但它不起作用。我想我需要使用 GridData 对象,但我在这里有点迷失。

【问题讨论】:

    标签: eclipse layout canvas rcp grid-layout


    【解决方案1】:

    您可以创建两个 GridData 对象并为它们设置值,一个用于非活动单元格,一个用于活动单元格。例如:

    GridData Acrive = new GridData();
    Active.widthHint = 200;
    Active.heightHint = 200;
    
    GridData Deactive = new GridData();
    Deactive.widthHint = 100;
    Deactive.heightHint = 100;
    

    然后在 Listener Method 中,您可以通过设置其 LayoutData 来管理当前的 Canvas Cell-Size,例如:

    c.setLayoutData(Active);
    

    c.setLayoutData(Deactive);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 2012-01-31
      • 2015-07-24
      相关资源
      最近更新 更多