分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
我们都知道JTable需要使用一个Model配合才能更好地发挥其作用。而使用Model有好多种方法,但是难易程度却大大不同,比如说我们使用AbstractTableModel接口要实现里面的好多方法,相对于这一点,使用DefaulttableModel 就可以大大而简化我们的工作量,我们只需要实现自己需要的方法就可以了。下面是一个简单的使用案例:
package UsefulKnowledge;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.util.Vector;import javafx.stage.WindowEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.DefaultTableModel;public class JTableTest implements TableModelListener{ JTable table=null; MyTable my=null; public JTableTest(){ JFrame frame=new JFrame(); my=new MyTable(); my.addTableModelListener(this); table=new JTable(my); table.setPreferredScrollableViewportSize(new Dimension(400,80)); JScrollPane s=new JScrollPane(table); Container container=frame.getContentPane(); container.add(s,BorderLayout.CENTER); frame.setTitle("Add_Remove_cells"); frame.pack(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public static void main(String[] args) { // TODO Auto-generated method stub new JTableTest(); } /** * 处理边个变化的事件函数 */ @Override public void tableChanged(TableModelEvent e) { // TODO Auto-generated method stub int row=e.getFirstRow(); int grade1=((Integer)(my.getValueAt(row, 1))).intValue(); int grade2=((Integer)(my.getValueAt(row, 2))).intValue(); int total=grade1+grade2; my.mySetValueAt(new Integer(total), row, 3); table.repaint(); } /** * 使用此内部类来创建一个表格 * @author Administrator * */ class MyTable extends AbstractTableModel{ Object[][]p= { {"Tom",new Integer(91),new Integer(1949),new Integer(1910)}, {"Jack",new Integer(82),new Integer(1969),new Integer(1510)}, {"Maria",new Integer(47),new Integer(1957),new Integer(1040)}, {"Jane",new Integer(61),new Integer(1957),new Integer(1180)}, {"Biao",new Integer(90),new Integer(1987),new Integer(1770)} }; String[] names={"Name","Age","Birthday","Salary"}; @Override public int getRowCount() { // TODO Auto-generated method stub return p.length; } @Override public int getColumnCount() { // TODO Auto-generated method stub return names.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return p[rowIndex][columnIndex]; } public String geColumnName(int col){ return names[col]; } public Class getColumnClass(int c){ return getValueAt(0,c).getClass(); } public boolean isCellEditable(int row,int column){ return true; } public void setValueAt(Object value,int row,int column){ p[row][column]=value; fireTableCellUpdated(row, column); } public void mySetValueAt(Object value,int row,int column){ p[row][column]=value; } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
我们使用tableChange方法来实现对表格内容改变的侦听。只需要实现相关的方法就可以实现对表格的操作咯。
那么赶紧试试吧。
第二部分:实现对表格内容的增删改
(1)增加行:DefaultModel.addRow(new Vector);//我们可以在Vector内添加具体的内容
(2)删除行:
int rowCount=defaultModel.getRowCount()-1;if(rowCount>=0){ defaultModel.removeRow(rowCount); defaultModel.setRowCount(rowCount);}table.revalidate();//最后这一个方法一定不要忘记,否则可能导致表格内容没有更新。
- 1
- 2
- 3
- 4
- 5
- 6