Java SWT从ListViewer中删除元素
我正在用SWT编写GUI。您可以通过单击按钮(如浏览)来选择文件,并通过名称将其添加到ListViewer中。我已经创建了一个新的按钮来从列表中删除文件,但它不适合我。 我想这就是所需要的代码:Java SWT从ListViewer中删除元素,java,swt,jface,Java,Swt,Jface,我正在用SWT编写GUI。您可以通过单击按钮(如浏览)来选择文件,并通过名称将其添加到ListViewer中。我已经创建了一个新的按钮来从列表中删除文件,但它不适合我。 我想这就是所需要的代码: ListViewer listViewer = new ListViewer(shlPmcompare, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); List list = listViewer.getList(); list.setBo
ListViewer listViewer = new ListViewer(shlPmcompare, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
List list = listViewer.getList();
list.setBounds(331, 11, 305, 100);
btnBrowse.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
FileDialog fileBrowse = new FileDialog(shlPmcompare, SWT.MULTI);
fileBrowse.setFilterExtensions(new String[] {"*.txt"});
String filePath = fileBrowse.open();
if (filePath != null) {
StringBuffer buf = new StringBuffer();
String[] files = fileBrowse.getFileNames();
for (int i = 0, n = files.length; i < n; i++) {
buf.append(fileBrowse.getFilterPath());
if (buf.charAt(buf.length() - 1) != File.separatorChar) {
buf.append(File.separatorChar);
}
buf.append(files[i]);
buf.append("\n");
}
for (int i = 0, n = files.length; i < n; i++) {
list.add(files[i], 0);
}
}
}
});
btnRemoveFile.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selectionFile = (IStructuredSelection)listViewer.getSelection();
List RemoveFile = (List)selectionFile.getFirstElement();
if(RemoveFile == null) {
MessageDialog.openError(shlPmcompare, "Removing Error", "You need to select file first.");
return;
}
list.remove(RemoveFile);
listViewer.refresh(false);
}
});
ListViewer ListViewer=新的ListViewer(shlPmcompare,SWT.BORDER | SWT.V|u SCROLL | SWT.H|u SCROLL);
List=listViewer.getList();
立根(331,11,305,100);
btnBrowse.addSelectionListener(新的SelectionAdapter(){
公共无效WidgeSelected(SelectionEvent e){
FileDialog fileBrowse=newfiledialog(shlPmcompare,SWT.MULTI);
fileBrowse.setFilterExtensions(新字符串[]{“*.txt”});
字符串filePath=fileBrowse.open();
if(filePath!=null){
StringBuffer buf=新的StringBuffer();
String[]files=fileBrowse.getFileNames();
for(int i=0,n=files.length;i
当您使用JFace查看器(如ListViewer
)时,除了少数例外,您不应该调用底层控件上的任何方法(List
)。查看器管理控件,您应该只使用查看器的方法来更改它
要从列表中删除所选内容,请调用ListViewer
remove
方法,notlist.remove
这是一个只显示一些字符串的查看器:
ListViewer listViewer = new ListViewer(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
listViewer.getList().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
listViewer.setContentProvider(ArrayContentProvider.getInstance());
ArrayList<String> contents = new ArrayList<>();
contents.add("a");
contents.add("b");
contents.add("c");
listViewer.setInput(contents);
Button btnRemoveFile = new Button(shell, SWT.PUSH);
btnRemoveFile.setText("Remove");
btnRemoveFile.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
IStructuredSelection selectionFile = listViewer.getStructuredSelection();
final Object removeFile = selectionFile.getFirstElement();
// TODO check for no selection
listViewer.remove(removeFile);
contents.remove(removeFile);
}
});
ListViewer ListViewer=新的ListViewer(shell,SWT.BORDER | SWT.V|u SCROLL | SWT.H|u SCROLL);
setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true));
setContentProvider(ArrayContentProvider.getInstance());
ArrayList contents=新的ArrayList();
内容。添加(“a”);
内容。添加(“b”);
内容。添加(“c”);
setInput(内容);
按钮btnRemoveFile=新按钮(shell,SWT.PUSH);
btnRemoveFile.setText(“删除”);
btnRemoveFile.addSelectionListener(新的SelectionAdapter(){
@凌驾
公共无效WidgeSelected(最终选择事件e){
IsStructuredSelectionFile=listViewer.getStructuredSelection();
final Object removeFile=selectionFile.getFirstElement();
//TODO检查是否没有选择
移除(移除文件);
内容。删除(removeFile);
}
});
当您使用JFace查看器(如ListViewer
)时,除了少数例外,您不应该调用底层控件上的任何方法(List
)。查看器管理控件,您应该只使用查看器的方法来更改它
要从列表中删除所选内容,请调用ListViewer
remove
方法,notlist.remove
这是一个只显示一些字符串的查看器:
ListViewer listViewer = new ListViewer(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
listViewer.getList().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
listViewer.setContentProvider(ArrayContentProvider.getInstance());
ArrayList<String> contents = new ArrayList<>();
contents.add("a");
contents.add("b");
contents.add("c");
listViewer.setInput(contents);
Button btnRemoveFile = new Button(shell, SWT.PUSH);
btnRemoveFile.setText("Remove");
btnRemoveFile.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
IStructuredSelection selectionFile = listViewer.getStructuredSelection();
final Object removeFile = selectionFile.getFirstElement();
// TODO check for no selection
listViewer.remove(removeFile);
contents.remove(removeFile);
}
});
ListViewer ListViewer=新的ListViewer(shell,SWT.BORDER | SWT.V|u SCROLL | SWT.H|u SCROLL);
setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true));
setContentProvider(ArrayContentProvider.getInstance());
ArrayList contents=新的ArrayList();
内容。添加(“a”);
内容。添加(“b”);
内容。添加(“c”);
setInput(内容);
按钮btnRemoveFile=新按钮(shell,SWT.PUSH);
btnRemoveFile.setText(“删除”);
btnRemoveFile.addSelectionListener(新的SelectionAdapter(){
@凌驾
公共无效WidgeSelected(最终选择事件e){
IsStructuredSelectionFile=listViewer.getStructuredSelection();
final Object removeFile=selectionFile.getFirstElement();
//TODO检查是否没有选择
移除(移除文件);
内容。删除(removeFile);
}
});
1。它仍然不工作,它总是进入IF语句。。2.我不明白我应该在“待办事项”部分写什么。您没有向我们显示足够的代码来进一步提供帮助,我们需要了解您如何将内容放入列表查看器。您的内容查看器是什么?您的setInput
调用是什么?向我们显示一个正确的列表。您正在将内容直接添加到列表
控件-如果您使用的是列表查看器
,则无法执行此操作。要么完全摆脱ListViewer
,只使用List
,要么继续使用ListViewer
,使用内容提供者、标签提供者和setInput
调用。你不能把事情搞混。你能编辑一下你放在这里的代码吗?我想了解你的意思,并与我的代码进行比较。。对我来说会容易些。非常感谢。如果你想使用挫折,你可以使用挫折,但这是一种拙劣的练习。学习使用布局。它仍然不工作,它总是进入IF语句。。2.我不明白我应该在“待办事项”部分写什么。您没有向我们显示足够的代码来进一步提供帮助,我们需要了解您如何将内容放入列表查看器。您的内容查看器是什么?您的setInput
调用是什么?给我们看一个合适的。你是在直接向t添加东西