这里是摘录一些 SWT/JFACE RCP项目中 比较有用的小代码。
右键复杂菜单
final MenuManager menuMgr = new MenuManager("#popupMenu");
menuMgr.setRemoveAllWhenShown(true);
reqTreeViewer.getControl().setMenu(menuMgr.createContextMenu(reqTreeViewer.getControl()));
menuMgr.addMenuListener(new IMenuListener(){
public void menuAboutToShow(IMenuManager manager) {
manager.add(new IAction());
}
});
TREE加Tex EDITOR
final TreeItem[]lastItem = new TreeItem[1];
final TreeEditor editor = new TreeEditor(reqTree);
reqTree.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
final TreeItem item = (TreeItem) event.item;
if (item != null && item == lastItem[0]) {
boolean isCarbon = SWT.getPlatform().equals("carbon");
final Composite composite = new Composite(reqTree, SWT.NONE);
if (!isCarbon)
composite.setBackground(new Color(null,0,0,0));
final Text text = new Text(composite, SWT.NONE);
final int inset = isCarbon ? 0 : 1;
composite.addListener(SWT.Resize, new Listener() {
public void handleEvent(Event e) {
Rectangle rect = composite.getClientArea();
text.setBounds(rect.x + inset, rect.y + inset, rect.width - inset * 2, rect.height - inset * 2);
}
}
);
Listener textListener = new Listener() {
public void handleEvent(final Event e) {
switch (e.type) {
case SWT.FocusOut:
item.setText(1,text.getText());
composite.dispose();
break;
case SWT.Verify:
String newText = text.getText();
String leftText = newText.substring(0, e.start);
String rightText = newText.substring(e.end, newText.length());
GC gc = new GC(text);
Point size = gc.textExtent(leftText + e.text + rightText);
gc.dispose();
size = text.computeSize(size.x, SWT.DEFAULT);
editor.horizontalAlignment = SWT.LEFT;
Rectangle itemRect = item.getBounds(),
rect = reqTree.getClientArea();
editor.minimumWidth = Math.max(size.x, itemRect.width) + inset * 2;
int left = itemRect.x,
right = rect.x + rect.width;
editor.setColumn(1);
editor.minimumWidth = Math.min(editor.minimumWidth, right - left);
editor.minimumHeight = size.y + inset * 2;
editor.layout();
break;
case SWT.Traverse:
switch (e.detail) {
case SWT.TRAVERSE_RETURN:
item.setText(1,text.getText());
// FALL THROUGH
case SWT.TRAVERSE_ESCAPE:
composite.dispose();
e.doit = false;
}
break;
}
}
};
text.addListener(SWT.FocusOut, textListener);
text.addListener(SWT.Traverse, textListener);
text.addListener(SWT.Verify, textListener);
editor.setEditor(composite, item);
if(item.getData() instanceof IRequestParameter){
IRequestParameter param= (IRequestParameter)item.getData();
text.setText(getFormatStringValue(param));
}
text.selectAll();
text.setFocus();
}
lastItem[0] = item;
}
});
TREE加BUTTON
final Tree tree = new Tree(shell, SWT.SINGLE);
for (int i = 0; i < 3; i++) {
TreeItem iItem = new TreeItem(tree, SWT.NONE);
iItem.setText("Item " + (i + 1));
for (int j = 0; j < 3; j++) {
TreeItem jItem = new TreeItem(iItem, SWT.NONE);
jItem.setText("Sub Item " + (j + 1));
for (int k = 0; k < 3; k++) {
new TreeItem(jItem, SWT.NONE).setText("Sub Sub Item " + (k + 1));
}
jItem.setExpanded(true);
}
iItem.setExpanded(true);
}
final TreeEditor editor = new TreeEditor(tree);
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
tree.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent event) {
final TreeItem item = tree.getSelection()[0];
final Button bn = new Button(tree, SWT.NONE);
bn.setText("click");
bn.setFocus();
bn.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent arg0) {
int style = SWT.ICON_QUESTION | SWT.YES | SWT.NO;
MessageBox messageBox = new MessageBox(shell, style);
messageBox.setMessage("Message");
int rc = messageBox.open();
item.setText(rc + "");
bn.dispose();
}
public void widgetDefaultSelected(SelectionEvent arg0) {
}
});
editor.setEditor(bn, item);
}
});
TREE加LABEL
reqTree.addMouseListener(new MouseAdapter(){
public void mouseDown(MouseEvent event){
clearTmpSelections();
final TreeItem item = reqTree.getSelection()[0];
final Label bn=new Label(reqTree,SWT.None);
bn.setFocus();
bn.setVisible(false);
if(item.getData() instanceof IRequestParameter){
IRequestParameter param=(IRequestParameter)item.getData();
bn.setText(getFormatStringValue(param));
}
bn.addListener(SWT.MouseDoubleClick, new Listener(){
public void handleEvent(Event event) {
System.out.println("Dasdasd");
}
});
tmpLabels.add(bn);
bn.addListener(SWT.MouseDoubleClick, new Listener() {
public void handleEvent(Event event) {
int style = SWT.ICON_QUESTION | SWT.YES | SWT.NO;
MessageBox messageBox = new MessageBox(new Shell(reqTree.getDisplay()));
messageBox.setMessage("Message");
int rc = messageBox.open();
item.setText(rc + "");
bn.dispose();
}
});
editor.setColumn(0);
editor.setEditor(bn, item);
}
});
分享到:
相关推荐
SWT JFACE 编程笔记 , 比较适合刚 解除 java swt jface 的开发人员
JFace 建立在 SWT 之上,提供了一层抽象,简化了开发过程,使得代码更简洁、可读性更强。JFace 引入了一些高级控件和数据模型,如视图、对话框、表编辑器等,并且实现了事件处理和数据绑定机制。通过使用 JFace,...
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...
Eclipse SWT JFace核心应用 PDF
JFace 建立在SWT之上,提供了一层抽象,简化了GUI开发的复杂性。JFace的目标是通过提供数据绑定、视图模型、对话框和服务等高级构造,来提高开发者的生产力。例如,它使用模型-视图-控制器(MVC)架构,将数据管理与...
JFace则是在SWT之上构建的一层抽象,它简化了GUI开发,提供了数据绑定、视图和控制器模式等高级特性。 TableViewer是JFace提供的一种用于展示表格数据的组件,它可以显示多种类型的数据,并支持各种操作,如排序、...
在这个名为“Eclipse SWT/JFace 核心应用的全部源代码”的压缩包中,包含了这两者的核心源代码,对于学习、理解和调试Eclipse相关项目具有极高的价值。 首先,SWT是Eclipse提供的一个开源的GUI库,它与Java标准的...
JFace则是建立在SWT之上的高级抽象层,它简化了GUI开发的复杂性,提供了更简洁的API。 在"SWT-JFace-3.4-API"这个压缩包中,包含了SWT和JFace的3.4版本的API文档。这些文档对于开发者来说是非常重要的参考资料,...
《Swt JFace in Action》是一本专注于Java图形用户界面(GUI)开发的专业书籍,中文版的出现使得更多的中国开发者能够深入理解并掌握Swt和JFace这两个强大的库。本书详细介绍了如何使用Eclipse的这两项核心技术来...
2. **JFace**:JFace是在SWT基础上构建的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、对话框、视图管理等功能。JFace的目的是减少代码量,提高代码的可读性和可维护性。源代码中可能包含JFace的使用示例,...
Eclipse SWT JFace核心应用 Eclipse SWT JFace核心应用
JFace则是建立在SWT之上的更高层次的抽象,旨在简化GUI开发的复杂性。JFace提供了一组高级组件、视图、对话框和事件处理机制,使得开发者可以专注于业务逻辑,而无需过多关注底层的SWT细节。例如,JFace的数据绑定...
总之,"SWT JFace核心应用原代码"是一个宝贵的资源,不仅能让初学者深入理解SWT和JFace的使用,还能帮助他们掌握实际项目开发中的各种技巧和最佳实践。通过学习和分析这些代码,开发者可以提升自己的GUI编程能力,为...
使用swt jface图形界面技术需要用到的jar文件。Swt,jface是一款非常优秀的javaUI库
"SWT+JFace+in+Action.pdf"和"SWT-JFace-in-Action_中文版.pdf"很可能是两本关于SWT和JFace的实战教程,其中可能涵盖了从基础到高级的各种主题,包括案例研究和实践指导。 总的来说,"SWT JFace in action API"的...
SWT Jface知识点,Eclipse SWT/JFace核心应用
声明:该文件不能以任何形式用于商业用途,仅供个人学习使用,如有侵权请联系我删除。如有不便,敬请原谅。
JFace是建立在SWT之上的更高层次的抽象框架,简化了GUI开发的复杂性,使得代码更简洁,结构更清晰。 SWT的设计目标是提供与本机系统更紧密的集成,因此它能够创建出与平台原生应用类似的外观和行为。这与Java Swing...
JFace,则是建立在 SWT 之上的更高层次的抽象,它简化了 SWT 的使用,减少了代码的复杂性。JFace 提供了数据绑定、视图、对话框等高级服务,使得开发者能够更专注于业务逻辑,而不是底层的 GUI 细节。JFace 还引入了...