java swing 中操作对象jtable 的方法 自定义对象jtable工具类

来源:互联网 发布:jq radio对象数组 编辑:程序博客网 时间:2024/05/22 10:24

此文原创,如有疑惑或改进 欢迎发送邮件到sheng24@vip.qq.com

http://download.csdn.net/detail/shengjocker/6395709


使用工具类:继承MyTableModel并传入对象类型即可

需要复写toString 方法 ,用于jtable显示

例如:

UserCfg 具有ID NAME属性 并有set get方法 


第一步:继承MyTableModel

class UserModel extends MyTableModel<UserCfg> {
public UserModel(String[] title, boolean[] canEdit) {
super(title, canEdit);
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (columnIndex == 0) {
return super.list.get(rowIndex).getId();
} else if (columnIndex == 1) {
return super.list.get(rowIndex).getName();
}
return null;
}
}


第二步:

往jtable传入定义的model对象即可

String[] titleUser = { "ID", "用户名" };
boolean[] canEditUser = new boolean[] { false, false};
UserModel userModel = new UserModel(titleUser, canEditUser);
userTable.setModel(userModel);
userScrollPane.setViewportView(userTable);


第三步:

操作UserModel来操作对象

userModel.add(userCfg);

userModel.get(1);




//工具类

package com.wincom.fsu.sheng.frame;
/**
*
* @author HuaSheng
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.swing.table.AbstractTableModel;






public abstract class MyTableModel<T> extends AbstractTableModel {
protected List<T> list;


private String[] title;


private boolean[] canEdit;


public MyTableModel(String[] title, boolean[] canEdit) {
list = new ArrayList<T>();
this.title = title;
this.canEdit = canEdit;
}


public MyTableModel(List<T> list, String[] title, boolean[] canEdit) {
this.list = list;
this.title = title;
this.canEdit = canEdit;
}


public void setAll(List<T> list){
this.list = list;
}

public void add(T t) {
list.add(t);
fireTableRowsInserted(list.size() - 1, list.size());
}

public void set(int i,T t){
list.set(i, t);
fireTableDataChanged();
}


public T get(int i) {
if (i >= 0 && i < list.size())
return list.get(i);
return null;
}

public List<T> getAll(){
return list;
}


public void addAll(List<T> tlist) {
list.addAll(tlist);
fireTableDataChanged();
}


public void remove(int i) {
if (i < list.size()) {
list.remove(i);
}
fireTableDataChanged();
}


public void removeAll() {
this.list.removeAll(this.list);
fireTableDataChanged();
}


public void refreshAll() {
fireTableDataChanged();
}


public void refreshSome(int first, int last) {
fireTableRowsUpdated(first, last);
}


public List<T> getDiffrent(List<T> list2) {
Map<T, Integer> map = new HashMap<T, Integer>(list.size()
+ list2.size());
List<T> diff = new ArrayList<T>();
List<T> maxList = list;
List<T> minList = list2;
if (list2.size() > list.size()) {
maxList = list2;
minList = list;
}
for (T t : maxList) {
map.put(t, 1);


}


for (T t : minList) {
Integer cc = map.get(t);
if (cc != null) {
map.put(t, ++cc);
continue;
}
map.put(t, 1);


}
for (Map.Entry<T, Integer> entry : map.entrySet()){
if (entry.getValue() == 1){
diff.add(entry.getKey());
}
}
return diff;
}


@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}


@Override
public String getColumnName(int column) {
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i < title.length; i++) {
map.put(i, title[i]);
}
return map.get(column);
}


@Override
public int getRowCount() {
return list.size();
}


@Override
public int getColumnCount() {
return title.length;
}


}
原创粉丝点击