defaultTableModel标准使用方法

来源:互联网 发布:java无难事 编辑:程序博客网 时间:2024/05/22 13:13
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) {                        // TODO Auto-generated catch block                        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); //用此种方法插入数据,不会造成表格闪动过快,用户的选择也不会丢失    }}
原创粉丝点击