gpt4 book ai didi

java - 如何为每个表列设置不同的比较器? (Eclipse 插件)

转载 作者:行者123 更新时间:2023-11-30 07:41:23 25 4
gpt4 key购买 nike

我正在为 future 的 Eclipse 插件创建一些通用类。

其中一个类旨在将表查看器添加到 View 中。

我想为不同的列创建不同的比较方法。

MyComparator comparator = new MyComparator();
viewer.setComparator(comparator);

MyComparator 扩展了 ViewerComparator 并覆盖了比较方法。我想定义如何根据所选列比较对象。

    @Override
public int compare(Viewer viewer, Object e1, Object e2) {
String columnHeaderName = .....
if(columnHeaderName == COLUMN_NAME)
{
//implement sort and return ....
}
else if(columnHeaderName == OTHER_COLUMN){
//implement sort and return ....
}
}

如何在compare方法中获取列名或列对象?

根据格雷格答案进行编辑:

创建列的位置:

columnObj.getColumn().addSelectionListener(new SelectionAdapter(){

@Override
public void widgetSelected(SelectionEvent e) {
// TODO Auto-generated method stub
table.setSortDirection(direction);
table.setSortColumn(columnObj.getColumn());
viewer.refresh();
}
});

在比较器类中:

private class SampleComparator extends ViewerComparator
{
Table table;
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
// TODO Auto-generated method stub
String columnName = table.getSortColumn().getText();
if(columnName == FIRSTCOLUMN)
{
System.out.println("Sorting for first column");
//Sorting implementation for this column
}
else if (columnName == SECONDCOLUMN)
{
System.out.println("Sorting for second column");
//Sorting implementation for this column
}

return super.compare(viewer, e1, e2);
}

private void setTable(Table table)
{
this.table = table;
}
}

最佳答案

对于表中的每个 TableColumn,您需要调用 TableColumn.addSelectionListener 添加一个监听器,单击列标题时将调用该监听器。

选择监听器需要记住当前列以便比较器使用。

关于java - 如何为每个表列设置不同的比较器? (Eclipse 插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34652214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com