Java Swing 之JTable及其简单的用法
2015-10-26 21:08
579 查看
我们都知道JTable需要使用一个Model配合才能更好地发挥其作用。而使用Model有好多种方法,但是难易程度却大大不同,比如说我们使用AbstractTableModel接口要实现里面的好多方法,相对于这一点,使用DefaulttableModel 就可以大大而简化我们的工作量,我们只需要实现自己需要的方法就可以了。下面是一个简单的使用案例:
我们使用tableChange方法来实现对表格内容改变的侦听。只需要实现相关的方法就可以实现对表格的操作咯。
那么赶紧试试吧。
第二部分:实现对表格内容的增删改
(1)增加行:DefaultModel.addRow(new Vector);//我们可以在Vector内添加具体的内容
(2)删除行:
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; } } }
我们使用tableChange方法来实现对表格内容改变的侦听。只需要实现相关的方法就可以实现对表格的操作咯。
那么赶紧试试吧。
第二部分:实现对表格内容的增删改
(1)增加行:DefaultModel.addRow(new Vector);//我们可以在Vector内添加具体的内容
(2)删除行:
int rowCount=defaultModel.getRowCount()-1; if(rowCount>=0){ defaultModel.removeRow(rowCount); defaultModel.setRowCount(rowCount); } table.revalidate();//最后这一个方法一定不要忘记,否则可能导致表格内容没有更新。
相关文章推荐
- Java Swing 之JTable及其简单的用法
- Java实现给定一个日期 求出这个日期是这一年中的第几天
- [转]struts2接收参数的几种形式
- Java中的设计模式
- java之迭代器
- Java虚拟机原理----JVM运行时数据区(转)
- Eclipse、IDEA环境下设置jvm默认编码
- 《Java 2 实用教程》读书笔记(一)
- java.util.concurrent.locks.LockSupport (讲得比较细)
- 设计模式之单例模式--java
- Struts2(四)属性驱动和模型驱动
- OC与Java的区别
- Spring controller的url扫描
- Spring随笔
- Java学习笔记(原创)
- Spring随笔1
- 从Eclipse转移到IntelliJ IDEA一点心得
- java22
- java21
- java20