DefaultTableModel

来源:互联网 发布:网络招聘话术技巧 编辑:程序博客网 时间:2024/05/20 09:49

DefaultTableModel

DefaultTableModel类是继承AbstractTableModel抽象类而来,且实现了getColumnCount(), getRowCount()getValueAt()3个方法.因此在实际的使用上,DefaultTableModelAbstractTableModel要来得简单许多,也较常被拿来使用.DefaultTableModel内部使用Vector来使用表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用DefaultTableModel类会来得方便也简单许多.若佻所要显示的数据模式非常复杂,例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会因人面异,因此使用AbstractTableModel会比较容易设计些.

 

下面是DefaultTableModel的构造函数:

DefaultTableModel():建立一个DefaultTableModel,里面没有任何数据.

DefaultTableModel(int numRows,int numColumns):建立一个指定行列数的DefaultTableModel.

DefaultTableModel(Object[][] data,Object[] columnNames):建立一个DefaultTableModel,输入数据格式为Object Array.系统会自动调用setDataVector()方法来设置数据。

DefaultTableModel(Object[] columnNames,int numRows):建立一个DefaultTableModel,并具有Column Header名称与行数信息。

DefaultTableModel(Vector columnNames,int numRows):建立一个DefaultTableModel,并具有column Header名称与行数信息。

DefaultTableModel(Vector data,Vector columnNames):建立一个DefaultTableModel,输入数据格式为Vector.系统会自动调用setDataVector()方法来设置数据。

DefaultTableModel类提供相当多好用的方法,如之前我们谈论过的getColumnCount(),getRowCount(),getValueAt(),isCellEditable(),setValueAt()等方法,均可直接使用。且DefaultTableModel也提供了addColumn()addRow()等方法,可让我们随时增加表格的数据。

</pre><pre name="code" class="java">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;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;public class DefaultModel implements ActionListener{private JTable table = null;private DefaultTableModel defaultModel = null;private JFrame f = null;private JPanel panel = null;public DefaultModel(){init();}private void init(){f = new JFrame();//table panelString[] name = {"字段 1","字段 2","字段 3","字段 4","字段 5"};String[][] data = new String[5][5];int value =1;for(int i=0; i<data.length; i++){for(int j=0; j<data[i].length ; j++)data[i][j] = String.valueOf(value++);}defaultModel = new DefaultTableModel(data,name);table=new JTable(defaultModel);table.setPreferredScrollableViewportSize(new Dimension(400, 80));JScrollPane s = new JScrollPane(table);//action panelpanel = new JPanel();JButton b = new JButton("增加行");panel.add(b);b.addActionListener(this);b = new JButton("增加列");panel.add(b);b.addActionListener(this);b = new JButton("删除行");panel.add(b);b.addActionListener(this);b = new JButton("删除列");panel.add(b);b.addActionListener(this);//content panel Container contentPane = f.getContentPane();contentPane.add(panel, BorderLayout.NORTH);contentPane.add(s, BorderLayout.CENTER);f.setTitle("AddRemoveCells");f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public void actionPerformed(ActionEvent e){if(e.getActionCommand().equals("增加列"))    defaultModel.addColumn("增加列");else if(e.getActionCommand().equals("增加行"))    defaultModel.addRow(new Vector());else if(e.getActionCommand().equals("删除列")){int columncount = defaultModel.getColumnCount()-1;if(columncount >= 0) {   TableColumnModel columnModel = table.getColumnModel();TableColumn tableColumn = columnModel.getColumn(columncount);columnModel.removeColumn(tableColumn);defaultModel.setColumnCount(columncount);}}else if(e.getActionCommand().equals("删除行")){int rowcount = defaultModel.getRowCount()-1;if(rowcount >= 0){defaultModel.removeRow(rowcount);defaultModel.setRowCount(rowcount); }}table.revalidate();}public static void main(String args[]) {new DefaultModel();}}
0 0
原创粉丝点击