java - 如何在 GEF 编辑器中实现自定义 FlowLayout?

标签 java swt eclipse-gef flowlayout draw2d

我正在实现一个 GEF 编辑器并面临以下问题。

有两种EditPart:1)GraphEditPart,2)NodeEditPart。 我的编辑器扩展了 GraphicalEditor,因为我根本不需要调色板。我将 SimpleRootEditPart 用于 GraphicalViewer

GraphEditPart 有一个 Layer 类型的图形,它是用 FlowLayout 布局的。它的模型子节点是节点,应该按照FlowLayout显示,即一个接一个,节点图形(一个Label)移动时“换行”超出 GraphicalViewer 的可见部分。这通常是水平滚动条出现的地方。为了抑制滚动条,我设置了 layer.setPreferredSize(new Dimension(getViewer().getControl().getSize()))。这工作得很好,所以当我将应用程序窗口调整为更小的尺寸时,编辑器变得更小,并且节点图形执行类似“换行符”的 la FlowLayout。

但是,如果我在图表中有很多节点,我想显示垂直滚动条,因为就像现在一样,节点刚好消失在屏幕底端下方。

所以基本上,我想要实现的行为就像文本编辑器的行为,如果您输入足够的文本,它就会向下滚动(就像 stackoverflow 上的 WYSIWYG 文本编辑器)...

我尝试通过调用 ((FigureCanvas) getViewer()).getControl.setVerticalScrollbarVisibility(FigureCanvas.AUTOMATIC)) 来设置滚动条可见,但无济于事。

最佳答案

我认为问题在于您使用的是 SimpleRootEditPart,它不支持滚动。尝试将其更改为 ScalableRootEditPart 甚至 ScalableFreeformRootEditPart(这就是我正在使用的)。您正在进行的调用会影响包含编辑部分的控件,但由于 GEF 管理它自己的 View ,因此您的调用没有任何效果。

关于java - 如何在 GEF 编辑器中实现自定义 FlowLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575378/

相关文章:

java - 在 Java 中收集符号出现的最快方法是什么

java - JPA Select 查询不返回一个字母单词的结果

java - Hadoop 2.7.3中的HTrace

java - SWT获取系统文件夹图像?

model - 如何通过适配器从 EMF 模型及其 GEF 编辑器中删除模型对象

eclipse-gef - Eclipse 上下文帮助

java - 使用 vararg 调用 Java 函数未在 Kotlin 中编译

eclipse - 什么是 SWT 数据网格/表?

java - 向 SWT 单行文本添加提示(如在搜索框中)

java - Eclipse建模框架和Eclipse图形编辑框架有什么用?