Eclipse RCP 学习记录
貌似RCP的资料比较少,仅有的也没发现介绍的比较详细的,现在都是东学一点西学一点,此帖简单记录一下要点
1.RCP中怎么实现全屏显示的程序
public void postWindowCreate(){
super.postWindowCreate();
getWindowConfigurer().getWindow().getShell().setMaximized(true);
}
2.在设置Layout为 BorderLayout时,会自动增加swing2swt.jar,但是在运行该工程时会报错,The activator ****.Activator for bundle aabb is invalid
我的解决办法是 打开plugin.xml文件,选择Runtime标签,在Classpath中将swing2swt.jar删除后再增加进来,并把swing2swt.jar Add to Build Path
3.增加table事件,点击某一行时改变颜色,始终没有效果出现
public void widgetSelected(SelectionEvent e){
int total = table.getItemCount();
TableItem tableItem = new TableItem(table, SWT.NONE,table.getSelectionIndex()+1);
tableItem.setText(new String[]{"1","2","3"});
for(int i=0;i<total;i++){
TableItem[] ii= table.getSelection();
table.getSelectionIndex();
table.getSelectionCount();
TableItem item = table.getItem(i);
if(table.isSelected(i)){
item.setBackground(item.getDisplay().getSystemColor(SWT.COLOR_RED));
item.setForeground(item.getDisplay().getSystemColor(SWT.COLOR_GREEN));
}else{
item.setBackground(null);
item.setForeground(null);
}
}
}
});
终于发现这个问题是创建TableView时选择样式FULL_SELECTION ,设置选择一行高亮的样式后,设置点击某一行时改变颜色(前景,后景色)就不起作用
但是出现新问题,只能选中第一列中的单元格
4.表格中只能选择单元格中的文字,如何选择整个单元格
5.在实现ITableColorProvider 接口后修改背景色之后,在TableItem中设置背景色时无效了
6.SWT/JFace的TableView为何设置行高这么麻烦,没有一个属性可以直接Set的
@Override
public void handleEvent(Event event) {
event.height = 25;
}
});
7. 将首选项的"恢复"和"应用"按钮隐藏
setValid(false);
8.RCP开发中的missing required bundle
在dependencies中已经添加了所需要的插件,但是运行时出现了missing required bundle错误
在运行设置对话框的Plug-in中选择add required plug-ins,这样系统会自动加载RCP项目运行所需要的插件
9.系统Preference 首选项的调用
10.SWT中org.eclipse.core.runtime.AssertionFailedException: assertion failed
textEditor = new TextCellEditor(table);
((Text)textEditor.getControl()).setTextLimit(10);
editors[1] = textEditor;
org.eclipse.core.runtime.AssertionFailedException: assertion failed:
at org.eclipse.core.runtime.Assert.isTrue(Assert.java:111)
at org.eclipse.core.runtime.Assert.isTrue(Assert.java:97)
at org.eclipse.jface.viewers.TextCellEditor.doSetValue(TextCellEditor.java:228)
at org.eclipse.jface.viewers.CellEditor.setValue(CellEditor.java:855)
at org.eclipse.jface.viewers.EditingSupport.initializeCellEditorValue(EditingSupport.java:96)
at org.eclipse.jface.viewers.ColumnViewerEditor.activateCellEditor(ColumnViewerEditor.java:194)
at org.eclipse.jface.viewers.ColumnViewerEditor.handleEditorActivationEvent(ColumnViewerEditor.java:443)
at org.eclipse.jface.viewers.ColumnViewer.triggerEditorActivationEvent(ColumnViewer.java:680)
at org.eclipse.jface.viewers.ColumnViewer.handleMouseDown(ColumnViewer.java:664)
at org.eclipse.jface.viewers.ColumnViewer.access$0(ColumnViewer.java:660)
at org.eclipse.jface.viewers.ColumnViewer$1.mouseDown(ColumnViewer.java:89)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.tasc.swb.internal.application.SWBApplication.start(SWBApplication.java:414)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
you have either not set the CellModifier for the TableViewer (using the setCellModifier() function)
11.保存工作区,以便在下次打开时恢复关闭时的状态
在ApplicationWorkbenchAdvisor 类中增加override initialize方法
configurer.setSaveAndRestore(true);
}
12.固定透视图在createInitialLayout()内部调用通过layout的setFixed(true)方法,或者直接在plugin.xml文件件中添加fixed="true"属性