Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java JTable中显示特定行_Java_Swing_Jtable_Rowfilter - Fatal编程技术网

在java JTable中显示特定行

在java JTable中显示特定行,java,swing,jtable,rowfilter,Java,Swing,Jtable,Rowfilter,我有一个Java表和TableModel。每一行(元素)都有一个ID。我想显示特定的ID。如何过滤这些元素?可以更改选定的ID 例如: public class L { int id; String name; String family; } //---- private static final String[] columnNames = { "name","family"}; private static final Class[] columnClasses = {class.St

我有一个Java表和
TableModel。每一行(元素)
都有一个ID。我想显示特定的ID。如何过滤这些元素?可以更改选定的ID

例如:

public class L {
int id;
String name;
String family;
}

//----

private static final String[] columnNames = { "name","family"};
private static final Class[] columnClasses = {class.String.class,String.Class};
private Vector<L> list = Vector<L>();

list.add(new L(1,"A","b"));
.
.
.
list.add(new L(100,"AB","aa");
公共类L{
int-id;
字符串名;
弦族;
}
//----
私有静态最终字符串[]columnNames={“name”,“family”};
私有静态最终类[]columnClasses={Class.String.Class,String.Class};
私有向量列表=向量();
增加(新的L(1,“A”、“b”);
.
.
.
增加(新的L(100,“AB”,“aa”);
我想用这个ID显示元素,例如{139455522}


如何筛选这些ID?

您可以使用RowFilter和TableRowSorter进行筛选:

final int[] ids = new int[]{1, 39, 45, 55, 22};
RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
  public boolean include(Entry entry) {
    L currentObject = (L) (entry.getValue(0));
    for(int i=0;i<ids.length;i++){
        if(currentObject.getId()==ids[i]){
            return true;
        }
    }
    return false;
  }
};

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
sorter.setRowFilter(filter);
yourTable.setRowSorter(sorter);
final int[]ids=新int[]{1,39,45,55,22};
RowFilter筛选器=新的RowFilter(){
公共布尔包含(条目){
L currentObject=(L)(entry.getValue(0));

对于(int i=0;i您可以使用RowFilter和TableRowSorter:

final int[] ids = new int[]{1, 39, 45, 55, 22};
RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
  public boolean include(Entry entry) {
    L currentObject = (L) (entry.getValue(0));
    for(int i=0;i<ids.length;i++){
        if(currentObject.getId()==ids[i]){
            return true;
        }
    }
    return false;
  }
};

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
sorter.setRowFilter(filter);
yourTable.setRowSorter(sorter);
final int[]ids=新int[]{1,39,45,55,22};
RowFilter筛选器=新的RowFilter(){
公共布尔包含(条目){
L currentObject=(L)(entry.getValue(0));

对于(int i=0;i)您确定使用类[]columnClasses={Integer.Class,String.Class};覆盖了getColumnClass;为了更好地帮助您更快发布一个简短的可运行可编译文件,您确定使用类[]columnClasses={Integer.Class,String.Class}覆盖了getColumnClass吗,以便更快地提供更好的帮助compilable@nasir您要求按ID筛选行,所以此代码将始终有效,无论您向classI添加多少字段添加“family”字段并从表中删除ID,但ID存在于“L”中class.entry get columns table.ID不是column table.ID。当我运行程序时,它不能将字符串(entry.getValue(0))强制转换为“L”类。:(
list.add(新的L(1,“A”,“b”);
entry.getValue(0)的情况下向表中添加一个
L
对象
是一个字符串,表示您没有发布真正的代码。感谢Harlandraka,我将代码更改为==>private static final String[]columnNames={“ID”,“name”,“family”};private static final Class[]columnclass={Long.Class,String.Class,String.Class};然后删除myTable中的ID列,然后使用您的代码.myTable.removeColumn(myTable.getColumnModel().getColumn(0));再次感谢。@nasir您要求按ID筛选行,因此此代码将始终有效,无论您向classI添加多少字段添加“family”字段并从表中删除ID,但ID存在于“L”中class.entry get columns table.ID不是column table.ID。当我运行程序时,它不能将字符串(entry.getValue(0))强制转换为“L”类。:(
list.add(新的L(1,“A”,“b”);
entry.getValue(0)的情况下向表中添加一个
L
对象
是一个字符串,表示您没有发布真正的代码。感谢Harlandraka,我将代码更改为==>private static final String[]columnNames={“ID”,“name”,“family”};private static final Class[]columnclass={Long.Class,String.Class,String.Class};然后删除myTable中的ID列,然后使用您的代码.myTable.removeColumn(myTable.getColumnModel().getColumn(0));再次感谢。