例子一:
package tableDemo3; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; 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; /** * 创建人: case-case * 创建日期: 2013-6-3 * DefaultTableModel比AbstractTableModel构建更加有意义 * * @version 1.0 * @since NC5.7 */ public class ChangeTable implements ActionListener { private JFrame frame = new JFrame("Hi ,Mr.li"); private JTable table = null; private DefaultTableModel tableModel; private String[] titles = { "姓名", "年龄", "数学成绩", "英语成绩", "总分", "是否及格" }; Object[][] userInfo = { { "啊啊", 30, "男", 89, 97, 186, true }, { "哈哈", 23, "女", 90, 93, 183, false } }; private JButton btnAddRow = new JButton("增加行"); private JButton btnRemoveRow = new JButton("删除行"); private JButton btnAddCol = new JButton("增加列"); private JButton btnRemoveCol = new JButton("删除列"); public ChangeTable() { this.tableModel = new DefaultTableModel(this.userInfo, this.titles); this.table = new JTable(this.tableModel); JScrollPane scr = new JScrollPane(this.table); JPanel toolBar = new JPanel(); toolBar.add(this.btnAddRow); toolBar.add(this.btnAddCol); toolBar.add(this.btnRemoveCol); toolBar.add(this.btnRemoveRow); frame.add(toolBar, BorderLayout.NORTH); frame.add(scr, BorderLayout.CENTER); frame.setSize(370, 160); frame.setVisible(true); frame.addWindowFocusListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(1); } }); this.btnAddCol.addActionListener(this); this.btnAddCol.addActionListener(this); this.btnRemoveCol.addActionListener(this); this.btnRemoveRow.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == this.btnAddRow) { this.tableModel.addColumn("新增列"); } if (e.getSource() == this.btnAddCol) { this.tableModel.addRow(new Object[] {}); } if (e.getSource() == this.btnRemoveCol) { int colCount = this.tableModel.getColumnCount();// 列数 if (colCount >= 0) { // 如果删除,必须找到TableColumnModel TableColumnModel columnModel = this.table.getColumnModel(); TableColumn tableColumn = columnModel.getColumn(colCount); columnModel.removeColumn(tableColumn); this.tableModel.setColumnCount(colCount); } } if (e.getSource() == this.btnRemoveRow) { int rowCount = this.tableModel.getRowCount() - 1; if (rowCount >= 0) { // 判断是否可以删除 this.tableModel.removeRow(rowCount); this.tableModel.setRowCount(rowCount); } } } }
package tableDemo3; /** * * case-case * @version 1.0 * @since NC5.7 */ public class JTableDemo3 { public static void main(String[] args) { new ChangeTable(); } }
例子二:
package tableDemo2; import javax.swing.table.AbstractTableModel; /** * <p> * 创建人: case-case * <p> * 创建日期: 2013-6-3 * <p> * * @version 1.0 * @since NC5.7 */ public class DefaultTable extends AbstractTableModel { private String[] titles = { "姓名", "年龄", "数学成绩", "英语成绩", "总分", "是否及格" }; Object[][] userInfo = { { "李林君", 30, "男", 89, 97, 186, true }, { "哈哈", 23, "女", 90, 93, 183, false } }; /** * 返回行数 * * @return * @see javax.swing.table.TableModel#getRowCount() */ @Override public int getRowCount() { return this.userInfo.length; } /** * 返回列数 * * @return * @see javax.swing.table.TableModel#getColumnCount() */ @Override public int getColumnCount() { return this.titles.length; } /** * 返回指定位置的值 * 创建日期: 2013-6-3 * * @param rowIndex * @param columnIndex * @return * @see javax.swing.table.TableModel#getValueAt(int, int) */ @Override public Object getValueAt(int rowIndex, int columnIndex) { return this.userInfo[rowIndex][columnIndex]; } /** * 返回列名 * * @param column * @return * @see javax.swing.table.AbstractTableModel#getColumnName(int) */ @Override public String getColumnName(int column) { return this.titles[column]; } /** * 得到指定列的类型 * * @param columnIndex * @return * @see javax.swing.table.AbstractTableModel#getColumnClass(int) */ public Class<?> getColumnClass(int columnIndex) { return this.getValueAt(0, columnIndex).getClass(); } /** * 所有的内容都可以编辑 * * @param rowIndex * @param columnIndex * @return * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int) */ public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } /** * 获得指定位置的值 * <p> * 创建日期: 2013-6-3 * <p> * * @param aValue * @param rowIndex * @param columnIndex * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int) */ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { this.userInfo[rowIndex][columnIndex] = aValue; } }
package tableDemo2; import test.TableColumnModelDemo; /** * 创建人: case-case * <p> * 创建日期: 2013-6-3 * @version 1.0 * @since NC5.7 */ public class JTbleDemo02 { public static void main(String[] args) { new TableColumnModelDemo(); } }