java - 更改 SWT 组合子项的顺序

标签 java swt

在我的例子中,我有一个 SashForm 的两个 child ,但这个问题适用于所有 Composite

class MainWindow {
    Sashform sashform;
    Tree child1 = null;
    Table child2 = null;

    MainWindow(Shell shell) {
        sashform = new SashForm(shell, SWT.NONE);
    }

    // Not called from constructor because it needs data not available at that time
    void CreateFirstChild() {  
        ...
        Tree child1 = new Tree(sashform, SWT.NONE);
    }

    void CreateSecondChild() {
        ...
        Table child2 = new Table(sashform, SWT.NONE);
    }    
}

我事先不知道这些方法的调用顺序。如何确保 child1 位于左侧,child2 位于右侧?或者,有没有一种方法可以在创建 sashform 之后更改它们的顺序?

目前我最好的想法是像这样放置占位符:

class MainWindow {
    Sashform sashform;
    private Composite placeholder1;
    private Composite placeholder2;
    Tree child1 = null;
    Table child2 = null;

    MainWindow(Shell shell) {
        sashform = new SashForm(shell, SWT.NONE);
        placeholder1 = new Composite(sashform, SWT.NONE);
        placeholder2 = new Composite(sashform, SWT.NONE);
    }

    void CreateFirstChild() {  
        ...
        Tree child1 = new Tree(placeholder1, SWT.NONE);
    }

    void CreateSecondChild() {
        ...
        Table child2 = new Table(placeholder2, SWT.NONE);
    }    
}

最佳答案

创建child1时,检查child2是否已经实例化。如果是,说明child1在右边,因为后面已经创建了,所以要这样做:

child1.moveAbove( child2 );

希望对您有所帮助。

关于java - 更改 SWT 组合子项的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780694/

相关文章:

Eclipse SWT 标签未显示在 Composite 中

java - 在覆盖 toString 时,是使用 getter 方法更好还是直接访问私有(private)字段更好?

java - 按键事件未被调用

java - Mybatis中如何正确使用<foreach>语句

java - 旋转后的矩形坐标

java - 设置文本后保持 SWT 文本框大小

java - 如何检查图像是否已存在于本地

java - 如何使用正则表达式查找字符串中的连续重复(即 [12][12])但长度仅为 2 或更大?

java - 调整标签大小以适合内容

eclipse-plugin - 在eclipse中显示ViewPart