Java Swing 之JTable及其简单的用法

分享一下我老师大神的人工智能教程!零基础,通俗易懂!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

表格实例运行结果

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/gfdfhjj/article/details/83924916