请教,自定义tablemodel 的排序问题

blackkettle 2012-12-03 01:53:27
java 达人,

比如我自定义了一个 tablemodel,
class TModel
extends AbstractTableModel {

Object col[] = null;
Object[][] data = null;

public void setCollen(Object[] col) {
this.col = col;
}

public void setObj(Object[][] oo) {
this.data = oo;
}

public int getColumnCount() {
return col.length;
}

public int getRowCount() {
return data.length;
}

public Object getValueAt(int row, int col) {
return data[row][col];
}

public String getColumnName(int column) {
return (String) col[column];
}

public Class getColumnClass(int c) {
// return getValueAt(0,c).getClass();
Class outclass = null;
ImageIcon b = new ImageIcon();
if( c == 0 )
{
outclass = b.getClass();
}
else
{
outclass = super.getColumnClass(c);
}
return outclass;
}

public boolean isCellEditable(int row, int col) {
return false;
}

public void setValueAt(Object aValue, int row, int column) {
data[row][column] = aValue;
}

public void clear() {
data = null;
}
}


然后定义了一个 table,

TModel tableModel = new TModel();
JTable table = new JTable(tableModel);


现在想要使用 table.setRowSorter 对 table 排序,应该怎么写呢?

table.setRowSorter(new TableRowSorter(tableModel));


这样写好像不对呀。

达人能给个例子么?
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lost_guy_in_scut 2012-12-05
  • 打赏
  • 举报
回复
在TModel重写hasCode()和equals方法。

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + Arrays.hashCode(col);
		result = prime * result + Arrays.hashCode(data);
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TModel other = (TModel) obj;
		if (!Arrays.equals(col, other.col))
			return false;
		if (!Arrays.equals(data, other.data))
			return false;
		return true;
	}
定义你要排序的规则
blackkettle 2012-12-05
  • 打赏
  • 举报
回复
帮我解决这个问题撒
帅惊联合国 2012-12-05
  • 打赏
  • 举报
回复
那分就给我吧 我来了。。。
blackkettle 2012-12-05
  • 打赏
  • 举报
回复
没人回帖就结了吧。
shiyonghu 2012-12-05
  • 打赏
  • 举报
回复
顶五楼,我觉得你应该按照五楼说的去写。
blackkettle 2012-12-05
  • 打赏
  • 举报
回复
引用 5 楼 lost_guy_in_scut 的回复:
在TModel重写hasCode()和equals方法。 Java code?123456789101112131415161718192021222324@Overridepublic int hashCode() { final int prime = 31; int result = 1; result = prime * result + Ar……
给个例子?简单的就好。
blackkettle 2012-12-05
  • 打赏
  • 举报
回复
引用 5 楼 lost_guy_in_scut 的回复:
在TModel重写hasCode()和equals方法。 Java code?123456789101112131415161718192021222324@Overridepublic int hashCode() { final int prime = 31; int result = 1; result = prime * result + Ar……
那如果这个 table 有 n 列,岂不是要定义 n个排序规则?
blackkettle 2012-12-04
  • 打赏
  • 举报
回复
高手在哪里呀?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧