Chapter 13: Creating Windows & Applets 785
//: c13:Table.java
// Simple demonstration of JTable.
// <applet code=Table
// width=350 height=200></applet>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
import com.bruceeckel.swing.*;
public class Table extends JApplet {
JTextArea txt = new JTextArea(4, 20);
// The TableModel controls all the data:
class DataModel extends AbstractTableModel {
Object[][] data = {
{"one", "two", "three", "four"},
{"five", "six", "seven", "eight"},
{"nine", "ten", "eleven", "twelve"},
};
// Prints data when table changes:
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e){
txt.setText(""); // Clear it
for(int i = 0; i < data.length; i++) {
for(int j = 0; j < data[0].length; j++)
txt.append(data[i][j] + " ");
txt.append("\n");
}
}
}
public DataModel() {
addTableModelListener(new TML());
}
public int getColumnCount() {
return data[0].length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public void
setValueAt(Object val, int row, int col) {
data[row][col] = val;
// Indicate the change has happened:
fireTableDataChanged();
}
public boolean
isCellEditable(int row, int col) {
return true;
}
}
public void init() {
Container cp = getContentPane();
JTable table = new JTable(new DataModel());
cp.add(new JScrollPane(table));
cp.add(BorderLayout.SOUTH, txt);
}
public static void main(String[] args) {
//Console.run(new Table(), 350, 200);
}
} ///:~//<applet code="Table" width=300 heigh=400>
//</applet>这个例子是think in java上的.你照着套就行了.
//: c13:Table.java
// Simple demonstration of JTable.
// <applet code=Table
// width=350 height=200></applet>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
import com.bruceeckel.swing.*;
public class Table extends JApplet {
JTextArea txt = new JTextArea(4, 20);
// The TableModel controls all the data:
class DataModel extends AbstractTableModel {
Object[][] data = {
{"one", "two", "three", "four"},
{"five", "six", "seven", "eight"},
{"nine", "ten", "eleven", "twelve"},
};
// Prints data when table changes:
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e){
txt.setText(""); // Clear it
for(int i = 0; i < data.length; i++) {
for(int j = 0; j < data[0].length; j++)
txt.append(data[i][j] + " ");
txt.append("\n");
}
}
}
public DataModel() {
addTableModelListener(new TML());
}
public int getColumnCount() {
return data[0].length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public void
setValueAt(Object val, int row, int col) {
data[row][col] = val;
// Indicate the change has happened:
fireTableDataChanged();
}
public boolean
isCellEditable(int row, int col) {
return true;
}
}
public void init() {
Container cp = getContentPane();
JTable table = new JTable(new DataModel());
cp.add(new JScrollPane(table));
cp.add(BorderLayout.SOUTH, txt);
}
public static void main(String[] args) {
//Console.run(new Table(), 350, 200);
}
} ///:~//<applet code="Table" width=300 heigh=400>
//</applet>这个例子是think in java上的.你照着套就行了.
翻翻以前的帖子!!
JTable table;Constructor codes:
dataModel = new AbstractTableModel(){
public int getColumnCount() { }
public int getRowCount() { }
......等等 };
table = new JTable(dataModel);接收到一个recordset[] 每个recordset是一个String[],请高手帮忙写一下下面的代码,把记录显示在table上。
看看这个能不能满足你的要求,前提是你把你的数据库记录都放到String[][]里
MyTest类是测试的,MyTable是最主要的
MyTest.java
import java.awt.*;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.event.*;public class MyTest{
public static void main(String args[]){
JFrame f=new JFrame();
String [][] str={{"中国","北京","aaa"},{"日本","东京","ssss"},{"美国","纽约","dddd"}};
MyTable mytable=new MyTable();
mytable.setP(str); //MODEL对象
JTable contractTable=new JTable(mytable); //利用MODEL创建表
Container con=f.getContentPane();
con.add(contractTable);
f.pack();
f.setSize(400,300);
f.show();
}
}//利用AbstractTableModel建立表
class MyTable extends AbstractTableModel{
private String[][] p=null;
private String[] n={"国家","城市","其他"};
int col=2;
MyTable(){ }
public void setP(String[][] contract){
p=contract;
} //重写AbstractTableModel的方法
public int getColumnCount(){
return n.length;
}
public int getRowCount(){
return p.length;
}
public Object getValueAt(int row,int col){
return p[row][col];
}
//显示表头
public String getColumnName(int col){
return n[col];
}
}
循环:tm.addRow(String[])
最后tabel.setModel(tm)搞定