Eclipse GEF常用技巧
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 1、大纲视图右键菜单项受editpart的createEditPolicies()方法影响。例如 :虽然右键菜单提供了删除选项,但只要相关的treeeditpart没有install ComponentEditPolicy,那么当鼠标打开该节点的右键菜单
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
1、大纲视图右键菜单项受editpart的createEditPolicies()方法影响。例如 :虽然右键菜单提供了删除选项,但只要相关的treeeditpart没有install ComponentEditPolicy,那么当鼠标打开该节点的右键菜单时,是不会看到“删除”项的。
2、和1类似,有时候某些作为容器元素的对象不希望被用户选中,也是通过修改policy来实现的。具体如下:
editpart实现
public class BoardPart extends ContainerPart {
protected void createEditPolicies() {
super.createEditPolicies();
installEditPolicy(EditPolicy.LAYOUT_ROLE, new BoardLayoutEditPolicy());
}
}
policy实现
public class BoardLayoutEditPolicy extends XYLayoutEditPolicy {
...
protected Command createChangeConstraintCommand(EditPart child,
Object constraint) {
return null;
}
...
}
从上面的代码可以看出,只要createChangeConstraintCommand()返回null,那么容器元素就不会被选中。
3、如果一个或多个图元的属性校验出错,希望自动选中,那么考虑对界面元素进行校验,然后使用下面的方法:
/**
* 选中未做关联的显示框
* @param errorEls 错误显示框ArrayList
*/
private void selectErrors(ArrayList
EditPartViewer viewer = getGraphicalViewer();
viewer.deselectAll(); //去掉所有选择项
EditPart last = null;
for(ElementView element:errorEls) {
EditPart editpart = (EditPart) viewer.getEditPartRegistry().get(element);
viewer.appendSelection(editpart); //添加选择元素
last = editpart;
}
viewer.reveal(last); //将最后选中元素放到窗口可视区域
}
4、退出编辑器时提示保存
根据国际惯例,编辑器退出却未保存时,一般都会弹出对话框提示用户选择是否关闭编辑器。这时我首先想到的是覆盖父类的dispose()方法,判断未保存就返回而不退出。可实践证明,eclipse RCP并不支持这样做。经过一番探索得知,需要实现ISaveablePart2接口,在promptToSaveOnClose()添加处理。代码如下:
@Override
public int promptToSaveOnClose() {
if(this.isDirty && !UIHelper.comfirm("关闭提示", title + "还未保存,确定退出?"))
return ISaveablePart2.CANCEL;
else
return ISaveablePart2.NO;
}
5、鼠标拖动自动调用选择工具
处理此问题要从画布元素的editpart类入手。第一步修改createFigure()方法:
protected IFigure createFigure() {
...
fig.setOpaque(true);
return fig;
}
第二步覆盖getDragTracker()方法:
public DragTracker getDragTracker(Request request) {
if (request instanceof SelectionRequest &&
((SelectionRequest) request).getLastButtonPressed() == 3)
{
return new DeselectAllTracker(this);
}
return new MarqueeDragTracker();
}
两个方法配合使用,否则无法达到目的。
6、如何通过editpart修改editor保存状态(不通过setDirty()实现)
由于editpart类是拿不到editor引用的,故想通过调用editor.setDirty()是不可能的。在我的项目中,拖动一个图元是可以触发修改标记,但是拖动连线后editor就不能自动设为修改状态。通过一番研究发现,可以在editpart类中增加如下方法来实现:
public void commit() {
getViewer().getEditDomain().getCommandStack().execute(new Command(){});
}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist
