Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GEF中选择子图形?_Java_Eclipse Rcp_Eclipse Gef - Fatal编程技术网

Java 如何在GEF中选择子图形?

Java 如何在GEF中选择子图形?,java,eclipse-rcp,eclipse-gef,Java,Eclipse Rcp,Eclipse Gef,我使用逻辑示例作为参考,实现了将端口作为子对象添加到矩形图/EditPart/模型中。端口图按预期显示,调试显示EditParts和模型已创建并添加到父级,但子级不可选择 在孩子的EditPart中,我重写isSelectable()以返回true 在父级中,我尝试重写createChildEditPolicy()以返回NonResizebleEditPolicy,方法是反转使子级不可选择的建议,但它似乎没有任何作用。如果我在孩子的EditPart中安装NonResizeableEditPoli

我使用逻辑示例作为参考,实现了将端口作为子对象添加到矩形图/EditPart/模型中。端口图按预期显示,调试显示EditParts和模型已创建并添加到父级,但子级不可选择

在孩子的EditPart中,我重写isSelectable()以返回true

在父级中,我尝试重写createChildEditPolicy()以返回NonResizebleEditPolicy,方法是反转使子级不可选择的建议,但它似乎没有任何作用。如果我在孩子的EditPart中安装NonResizeableEditPolicy作为选择_反馈_角色,它最初在创建时被选中,但以后不能被选中

此外,单击子图形时,也不会选择父图形-这是一个死点,单击不会更改选择


我是否缺少使其可选择的内容,或者可能有其他内容正在干扰?

您可以尝试使用调试器将断点设置为查看器getEditPartAt(点),然后从该点开始逐步执行。这应该在您单击子对象时触发


可能是因为没有创建任何选择反馈,所以您也可以尝试输出查看器。getSelectedEditParts()以检查是否确实存在选择,但缺少反馈。

我遇到了相同的问题,并通过以下方式进行了修复:尝试在editpart中安装合适的策略

   @Override
   protected void createEditPolicies() {
       installEditPolicy(EditPolicy.LAYOUT_ROLE, yourEditPolicy());
   }

我想您指的是getObjectAt(Point)——它返回一个EditPart。它不会被触发,getSelectedEditParts()也不会被触发。选择工具设置为仅选择一个对象,当我单击子对象时,先前选择的内容将保持选中状态,而不会向选择中添加任何内容。好的,您是否在该子EditPart类中重写了getDragTracker()函数?如果没有,请检查super class是否正在执行此操作,或者超越它以提供基本的DragTracker。如果返回null,这可能是原因。如果DragTracker在那里,您可以从DragTrackers mouseDown函数检查发生了什么。一旦我移除这些,它现在就可以工作了。感谢Hotzilla提供的解决方案。很遗憾,我没有创建帐户,因此无法登录以接受您的答案。@克里斯,我合并了您的帐户,因此您现在应该可以接受此答案。