![](/img/trans.png)
[英]How can I get a GEF GraphicalViewer to fit the view/editor that it's in?
[英]How to implement custom FlowLayout in a GEF editor?
我正在實現GEF編輯器,並且面臨以下問題。
有兩種類型的EditPart:1)GraphEditPart,2)NodeEditPart。 我的編輯器擴展了GraphicalEditor
,因為我根本不需要調色板。 我將SimpleRootEditPart
用於GraphicalViewer
。
GraphEditPart
具有一個類型為Layer
的圖形,該圖形使用FlowLayout
。 它的模型子節點是Nodes,當節點圖形( Label
)移動到GraphicalViewer
的可見部分之外時,應根據FlowLayout
進行顯示,即一個接一個地顯示“換行符”。 這通常是水平滾動條出現的地方。 為了取消滾動條,我設置了layer.setPreferredSize(new Dimension(getViewer().getControl().getSize()))
。 這已經足夠好了,所以當我將應用程序窗口調整為較小的尺寸時,編輯器將變得更小,並且節點圖形執行FlowLayout的“換行”。
但是,如果圖形中有很多節點,我想顯示垂直滾動條,因為到現在為止,這些節點僅在屏幕底部下方消失。
所以基本上,我想要實現的行為就像一個文本編輯器,如果您只輸入足夠的文本,它就會向下滾動(例如,在stackoverflow上的WYSIWYG文本編輯器)...
我試圖通過調用((FigureCanvas) getViewer()).getControl.setVerticalScrollbarVisibility(FigureCanvas.AUTOMATIC))
將滾動條設置為可見,但無濟於事。
我認為問題在於您使用的是SimpleRootEditPart
,它不支持滾動。 嘗試將其更改為ScalableRootEditPart
甚至ScalableFreeformRootEditPart
(這就是我正在使用的)。 您正在執行的調用會影響包含編輯部分的控件,但是由於GEF管理着它自己的視圖,因此您的調用無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.