有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Eclipse4中单击最后一个部件(选项卡)时动态创建部件

我在partstack中创建了两个零件。所有部分使用相同的贡献uri。我需要一个第三部分说“添加新零件”(或标签)点击时,它必须动态创建一个新零件,并在前两个零件之后进行安排,然后再次“添加新零件”的零件必须在最后出现。因此,无论何时单击“添加新零件”,都必须创建新零件。 为“添加新零件”零件添加以下代码

MPart part = partService.createPart("com.abc.xyz.project.partDescriptor.DynamicPart");
MPartStack stack = (MPartStack)modelService.find("com.abc.xyz.project.partstack.2", application);
     stack.getChildren().add(part);
            part.setLabel("New Dynamic Part");
    part.setVisible(true);
    part.setCloseable(true);
    partService.showPart(part, PartState.ACTIVATE);

谁能给我提些建议吗

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    动态创建“添加新零件”,如示例所示(示例用于输入零件):

    MPartStack stack = (MPartStack) modelService.find("your.part.stack.id", application);
    inputPart = MBasicFactory.INSTANCE.createInputPart();
    inputPart.setContributionURI("bundleclass://your.plugin/your.class");
    inputPart.setCloseable(isCloseable);
    stack.getChildren().add(inputPart);
    inputPart.setLabel("Add new part");
    

    “不ndleclass://your.plugin/your.class是对类的引用,用于引用部件的内容。它类似于“类URI”“片段编辑器中的字段。上面的代码向零件堆栈添加了一个新选项卡,但没有激活零件,因此不会调用内容类中的@Postconstruct方法。当用户单击选项卡时,将调用@Postconstruct方法。您可以在那里再次创建新零件。”

  2. # 2 楼答案

    在应用程序模型中创建零件描述符,描述要添加的零件

    使用EPartService创建零件:

    MPart part = partService.createPart(part descriptor id);
    

    将创建的部分添加到应用程序模型上定义的MPartStack,您可以使用EModelService找到堆栈

    MPartStack stack = (MPartStack)modelService.find(stack id, application);
    
    stack.getChildren().add(part);
    

    如果要从描述创建多个零件,请确保选中零件描述定义中的Multiple选项