package testDefaultModel;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
* 展示如何使用DefaultTableModel类创建表格
*
* @author burns
*
*/
public class Test9 {
JTable table = null;
DefaultTableModel defaultModel = null;
public Test9() {
JFrame f = new JFrame();
Vector columnNames = createColumnNames();
Vector data = createTableModelData();
defaultModel = new DefaultTableModel(data, columnNames);
table = new JTable(defaultModel);
table.setPreferredScrollableViewportSize(new Dimension(400, 80));
JScrollPane tablePanel = new JScrollPane(table);
JPanel buttonPanel = new JPanel();
JButton addRow = new JButton("增加行");
buttonPanel.add(addRow);
addRow.addActionListener(new AddRowAction(defaultModel));
JButton deleteRow = new JButton("删除行");
buttonPanel.add(deleteRow);
deleteRow.addActionListener(new DeleteRowAction(defaultModel));
generateTabelDataThread();
Container contentPane = f.getContentPane();
contentPane.add(buttonPanel, BorderLayout.NORTH);
contentPane.add(tablePanel, BorderLayout.CENTER);
f.setTitle("AddRemoveCells");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private void generateTabelDataThread() {
GenerateDataThread t1 = new GenerateDataThread();
Thread t = new Thread(t1);
t.start();
}
private Vector createColumnNames() {
Vector columnNames = new Vector();
columnNames.add("姓名");
columnNames.add("工号");
columnNames.add("出生年月");
columnNames.add("薪水");
return columnNames;
}
private Vector createTableModelData() {
Vector rowData1 = new Vector();
rowData1.add("王鹏");
rowData1.add(new Integer(91));
rowData1.add(new Integer(1949));
rowData1.add(new Integer(1910));
Vector rowData2 = new Vector();
rowData2.add("朱学莲");
rowData2.add(new Integer(91));
rowData2.add(new Integer(1949));
rowData2.add(new Integer(1910));
Vector rowData3 = new Vector();
rowData3.add("梅婷");
rowData3.add(new Integer(91));
rowData3.add(new Integer(1949));
rowData3.add(new Integer(1910));
Vector rowData4 = new Vector();
rowData4.add("张凯");
rowData4.add(new Integer(91));
rowData4.add(new Integer(1949));
rowData4.add(new Integer(1910));
Vector data = new Vector();
data.add(rowData1);
data.add(rowData2);
data.add(rowData3);
data.add(rowData4);
return data;
}
public static void main(String[] args) {
new Test9();
}
class GenerateDataThread implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100000; i++) {
Vector rowData = new Vector();
rowData.add("name"+i);
rowData.add(i);
rowData.add(i);
rowData.add(i);
if(i%2000 == 0){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
defaultModel.insertRow(defaultModel.getRowCount(), rowData);
}
}
}
}
package testDefaultModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.table.DefaultTableModel;
public class DeleteRowAction implements ActionListener {
private DefaultTableModel defaultModel;
public DeleteRowAction(DefaultTableModel defaultModel) {
this.defaultModel = defaultModel;
}
@Override
public void actionPerformed(ActionEvent e) {
int rowcount = defaultModel.getRowCount() - 1;
defaultModel.removeRow(rowcount);
}
}
package testDefaultModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.table.DefaultTableModel;
public class AddRowAction implements ActionListener {
DefaultTableModel defaultModel;
public AddRowAction(DefaultTableModel defaultModel) {
this.defaultModel = defaultModel;
}
@Override
public void actionPerformed(ActionEvent e) {
Object[] p = { "lvyuan", new Integer(91), new Integer(1949),
new Integer(1910) };
defaultModel.insertRow(0, p);
}
}