tableViewer.setInput(PassengerFactory.getPeoples(result)); ============================================================================================ public class TestContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) { // TODO Auto-generated method stub if(inputElement instanceof List) return ((List)inputElement).toArray(); return null; } public void dispose() { // TODO Auto-generated method stub } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // TODO Auto-generated method stub }} ================================================================================================= 另外一个类:class TestLabelProvider implements ITableLabelProvider 实现其中的getColumnText()方法; ================================================================================================= public class PassengerFactory { public static List getPeoples(ResultSet rs){ //工厂的静态方法 List list = new ArrayList(); try { ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); String colname="";
while(rs.next()) { PassengerEntity pe=new PassengerEntity(); for(int j=0;j<columnCount;j++){ int i=j+1; Object value=rs.getObject(i); switch (j){ case 0: pe.setId(value.toString()); break; case 1: pe.setFlightnumber(value.toString()); break; case 2: pe.setFlightdate(value.toString()); break; case 3: pe.setPassengername(value.toString()); break; case 4: pe.setPassengersex(value.toString()); break; case 5: pe.setCabin(value.toString()); break; case 6: pe.setSegment(value.toString()); break; case 7: pe.setSeatnumber(value.toString()); break; case 8: pe.setBoardnumber(value.toString()); break; case 9: pe.setBoardtime(value.toString()); break; case 10: pe.setBaggage(value.toString()); break; case 11: pe.setBweight(value.toString()); break; case 12: pe.setUpdatetime(value==null?"---":value.toString()); break; default: break; }
private String[] headNames; private Object[][] data; private boolean[][] cellEditable; public ModuleTableModel(String[] headNames, Object[][] data) {
this.headNames = headNames;
this.data = data;
if (data.length > 0)
cellEditable = new boolean[data.length][data[0].length];
else cellEditable = new boolean[0][0];
for (int i = 0; i < data.length; i++) {
Arrays.fill(cellEditable[i], true);
}
}
}dataModel = new TableModel ....
tb = new JTable(dataModel);
构造table的阶段主要涉及三个函数
tableViewer.setContentProvider(new TestContentProvider());
tableViewer.setLabelProvider(new TestLabelProvider());
tableViewer.setInput(PassengerFactory.getPeoples(result));
============================================================================================
public class TestContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
if(inputElement instanceof List)
return ((List)inputElement).toArray();
return null;
} public void dispose() {
// TODO Auto-generated method stub } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub }}
=================================================================================================
另外一个类:class TestLabelProvider implements ITableLabelProvider 实现其中的getColumnText()方法;
=================================================================================================
public class PassengerFactory {
public static List getPeoples(ResultSet rs){ //工厂的静态方法
List list = new ArrayList();
try {
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
String colname="";
while(rs.next())
{
PassengerEntity pe=new PassengerEntity();
for(int j=0;j<columnCount;j++){
int i=j+1;
Object value=rs.getObject(i);
switch (j){
case 0:
pe.setId(value.toString());
break;
case 1:
pe.setFlightnumber(value.toString());
break;
case 2:
pe.setFlightdate(value.toString());
break;
case 3:
pe.setPassengername(value.toString());
break;
case 4:
pe.setPassengersex(value.toString());
break;
case 5:
pe.setCabin(value.toString());
break;
case 6:
pe.setSegment(value.toString());
break;
case 7:
pe.setSeatnumber(value.toString());
break;
case 8:
pe.setBoardnumber(value.toString());
break;
case 9:
pe.setBoardtime(value.toString());
break;
case 10:
pe.setBaggage(value.toString());
break;
case 11:
pe.setBweight(value.toString());
break;
case 12:
pe.setUpdatetime(value==null?"---":value.toString());
break;
default:
break;
}
}
list.add(pe);
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} //取得数据表中的字段数目,类型等返回结果 return list;
}}
目的:返回一个List用作tableViewer数据源!你可以按照这个思路 试一下
以前用这个写过数据库的工具
frame.setBounds(100, 100, 500, 375);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable();
final JScrollPane scrollPane = new JScrollPane();
Vector<String> tableData = new Vector<String>();
Vector<String[]> rowData=new Vector<String[]>();
DefaultTableModel model=(DefaultTableModel) table.getModel();
model.setDataVector(rowData, tableData); scrollPane.getViewport().add(table,null);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
model.addColumn("姓名");
model.addColumn("性别");
model.addRow(new String[]{"刘德华","45"});