搞一个网上对象传输的程序。因为应用到了JTable,使用一个JTable的模板。这个类里面的方法设置得当,又方便于嵌入GUI使用,所以也给大家介绍一下:
import java.io.*;
import java.lang.*;
import javax.swing.table.AbstractTableModel;
import java.io.Serializable;
/**
* Datenstruktur fuer eine Tabellenstruktur. Diese Datenstruktur kann
* direkt vom JTable verwendet werden. Ausserdem ist sie Serializable,
* was es erlaubt ueber das Netzwerk zu uebertragen.
*/
public class TableDataModel extends AbstractTableModel implements Serializable{
private int rowSize=0;
private int columnSize=0;
private Object[][] data = null;
private String[] columnNames = null;
/**
* Konstruktor der ein Tabellenstruktur anlegt.
*
* @param row Anzahl der Reihen.
* @param col Anzahl der Spalten.
*
* @exception none
*/
public TableDataModel(int row, int col) {
rowSize=row;
columnSize=col;
data = new Object[row][col];
columnNames = new String[col];
}
/**
* Liefert die Anzahl Spalten der Tabellenstruktur.
*
* @param none
*
* @return (Typ: int) Anzahl Spalten.
* @exception none
*/
public int getColumnCount() { return columnSize; }
/**
* Liefert die Anzahl Spalten der Tabellenstruktur.
*
* @param none
*
* @return (Typ: int) Anzahl Spalten.
* @exception none
*/
public int getRowCount() { return rowSize;}
/**
* Liefert den Inhalt aus der Tabellenstruktur am Platz (row,col).
*
* @param row Reihenindex.
* @param col Spaltenindex.
*
* @return (Typ: Object) Inhalt des Tabellenfeldes.
* @exception none
*/
public Object getValueAt(int row, int col) { return data[row][col]; }
/**
* Liefert Spaltenueberschriftam Platz (col).
*
* @param col Spaltenindex.
*
* @return (Typ: String) Inhalt der Tabellenueberschrift.
* @exception none
*/
public String getColumnName(int col) { return columnNames[col]; }
/**
* Schreiben eines Objektes in die Tabellenstruktur am Platz (row,col).
*
* @param val Objekt das in die Tabellenstruktur geschrieben wird.
* @param row Reihenindex.
* @param col Spaltenindex.
*
* @return none
* @exception none
*/
public void setValueAt(Object val, int row, int col) {
fireTableCellUpdated(row, col);
data[row][col]=val;
}
/**
* Beschriften der Tabellen am Platz (col).
*
* @param titel Spaltenueberschrift.
* @param col Spaltenindex.
*
* @return none
* @exception none
*/
public void setColumnNameAt(String titel, int col) { columnNames[col]=titel; }
/**
* Methode liefert true, wenn kein Objekt (Wert=null) in speziellen Tabellenstruktur
* abgespeichert ist.
*
* @param row Reihenindex.
* @param col Spaltenindex.
*
* @return (Typ: boolean) Ob es fuer den Benutzer erlaubt ist in der UI einen Wert einzugeben.
* @exception none
*/
public boolean isCellEditable(int row, int col) {
if(data[row][col] == null) return true;
else return false;
}
public String toString() {
String line = "";
for(int i=0; i<data.length; i++){
for(int j=0; j<data[0].length; j++) {
line=line+"("+i+"/"+j+" "+((String) data[j]+" ";
}
}
System.out.println();
return line;
}
}