我在FieldEditorPreferencePage中遇到布局设置问题.
我的代码是这样的:
public void createFieldEditors () {
Group pv = new group(getfieldEditorParent(), SWT.SHADOW_OUT);
Group of = new group(getfieldEditorParent(), SWT.SHADOW_OUT);
pv.setText(“pv”);
of.setText(“of”);
GridLayout layout = new GridLayout(2,false);
pv.setLayout(layout);
of.setLayout(layout);
addField(new StringFieldEditor(“PreferenceStore name”,“Text:”, pv);
addField(new StringFieldEditor(“PreferenceStore name”,“Text:”, pv);
addField(new StringFieldEditor(“PreferenceStore name”,“Text:”, of);
addField(new StringFieldEditor(“PreferenceStore name”,“Text:”, of);
and so on.
}
Run Code Online (Sandbox Code Playgroud)
问题是它不适用于GridLayout.
StringFieldEditors不是并行的.列数始终为1.此外,当我尝试更改组中StringFieldEditors的大小时,它也不起作用.
有人有什么想法吗?
谢谢.
我想做的是能够在表格中的元素之间进行选项卡.
我目前正在创建这样的表.
this.tableViewer =
new TableViewer(parent , SWT.FULL_SELECTION);
tableViewer.setUseHashlookup(true);
table = tableViewer.getTable();
GridData gridData = new GridData(GridData.FILL_BOTH);
gridData.grabExcessVerticalSpace = true;
table.setLayoutData(gridData);
table.setLinesVisible(true);
table.setHeaderVisible(true);
...
/** Create the Cell Editor Array - will hold all columns **/
editors = new CellEditor[table.getColumnCount()];
/** Cell Editor Row 1 **/
/** Set the column properties **/
tableViewer.setColumnProperties(columnNames);
/** Assign the cell editors to the viewer **/
tableViewer.setCellEditors(editors);
/** Set the cell modifier for the viewer **/
tableViewer.setCellModifier(new MyCellModifier(this));
//Create the Table Viewer
/** Table …Run Code Online (Sandbox Code Playgroud) 我想在SWT/JFace应用程序中添加一个搜索功能,当用户在搜索文本字段中输入文本时,该功能会过滤TableViewer.
final Text filterText = new Text(parent, SWT.NONE);
filterText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
//TODO how to update the viewer filter with the new text ?
}
});
TableViewer tableViewer = new TableViewer(...);
ViewerFilter filterViewer = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (filterText.getText() == "") {
return true;
}
//do my stuff to know if element need to be filtered or not
return false;
}
};
tableViewer.addFilter(filterViewer);
Run Code Online (Sandbox Code Playgroud)
我是否需要删除过滤器并在修改侦听器中创建一个新过滤器,还是有更好的解决方案?
我已经通过http://download.eclipse.org/releases/juno更新站点在Eclipse 3.8上安装了插件开发环境 .现在,在"插件依赖关系"树下的PDE项目中,我看到所有PDE JAR都将源集连接到相同的JAR.然而,JAR不包含任何源 - 仅包含类文件.
因此,我看不到PDE/JFace类的Javadoc,并且为自动生成的代码获得了难看的arg0,arg1等.
我在哪里以及如何获得PDE/JFace的源代码或Javadoc?
目前正在努力工作,但JFace遇到了一个小问题.我需要的大部分内容都有一个允许下一个按钮变为活动状态的复选框.
这是代码
Button btnConfirm = new Button(container, SWT.CHECK);
btnConfirm.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
//missing if statement
setPageComplete(true);
}
});
btnConfirm.setBounds(330, 225, 75, 20);
btnConfirm.setText("Confirm");
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助
编辑我要做的是构建一个菜单,其中一些人必须接受条款和条件才能超过一个点默认是空白,但是当选中该框时,将出现下一个按钮,如果是然后,下一个按钮将保持不活动状态.
我无法理解Eclipse RCP应用程序中的数据绑定.我只是无法弄清楚它应该如何工作..
这就是我想要做的
我有一个视图,其中应显示文本列表.文本被"存储"在一个简单的文本中List<String>,通过单例提供(仅用于演示目的;)).所以无论谁使用ListProvider遗嘱都会获得文本列表.当列表更改时,我希望我的View自动更新表格内容.
这是我到目前为止所做的
我的列表提供程序Observable将在列表更改时通知观察者.
在我看来,我创建了一个Observer来监视列表提供程序,当通知观察者时,我刷新了我的视图.
代码ListProvider:
public class ListProvider extends Observable {
private Stack<String> hist;
private static ListProvider instance;
// Singleton implementation
public static ListProvidergetInstance() {
if (null == instance) {
instance = new ListProvider
}
return instance;
}
public void add(String text) {
if (this.hist.size() == MAX_SIZE) {
this.hist.remove(MAX_SIZE-1);
}
this.hist.add(0, text);
// notify all observers
this.setChanged();
this.notifyObservers();
}
}
Run Code Online (Sandbox Code Playgroud)
视图代码:
public class TestView extends ViewPart {
private TableViewer …Run Code Online (Sandbox Code Playgroud) 我正在开发Eclipse RCP应用程序,并且我正在尝试使用ILazyTreeContentProvider实现,以便在特定时间仅显示可见项目.
代码:
在扩展ViewPart的类中:
public void createPartControl(Composite parent) {
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.VIRTUAL);
drillDownAdapter = new DrillDownAdapter(viewer);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
//viewer.setSorter(new NameSorter());
viewer.setInput(getViewSite());
// Create the help context id for the viewer's control
PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "test.provider.lazy.viewer");
makeActions();
hookContextMenu();
hookDoubleClickAction();
contributeToActionBars();
}
Run Code Online (Sandbox Code Playgroud)
在ContentProvider中:
@Override
public void updateElement(Object parent, int index) {
System.out.println(updateElementCounter++);
if (parent.equals(getViewSite())) {
if (index == 0) {
TreeParent child = new TreeParent("Parent 1");
viewer.replace(parent, index, child);
viewer.setHasChildren(child, true);
} …Run Code Online (Sandbox Code Playgroud) 我需要一个按钮不断放在我的JFace对话框的左下角,即使是对话框的大小.
我重写了createButtonsForButtonBar()
protected void createButtonsForButtonBar(Composite parent)
{
sampleButton = createButton(parent, IDialogConstants.NO_ID, "Sample", true);
createButton(parent, IDialogConstants.OK_ID,"OK", false);
createButton(parent, IDialogConstants.CANCEL_ID,"Close", false);
}
Run Code Online (Sandbox Code Playgroud)
我想将样本按钮放在左下角,然后是空格,然后确定,取消.
我如何实现这一目标?
我一直想知道为什么我们需要 JFace TableViewers 的 ContentProviders?我知道ContentProvider类的getElements()方法将返回与表上的行相对应的对象数组或集合,当我们在表上时将调用 getElements 。但我的问题会更具体..setInput(input)
getElements 返回一个数组或对象集合,相反,我可以编写自己的方法来返回一个对象数组,然后在表查看器的实例上执行 setInput ,对吗?
有人可以就我们为什么需要 ContentProviders 给我一个不太技术但简短而令人满意的答案吗?如果没有 ContentProviders,如果我尝试在表上设置输入,那么什么也不会显示......所以当谈到 JFace 时,ContentProvider 和 LabelProvider 是必须的......
按钮单击以打开FileDialog Box并选择要在特定标签上显示的任何图像.
我尝试使用Label控件中的选定图像设置绝对路径或相对路径,但不能动态正常工作.
所以请帮我解决问题.
jface ×10
swt ×8
java ×7
eclipse ×5
eclipse-rcp ×4
button ×1
data-binding ×1
dialog ×1
filedialog ×1
tableviewer ×1