1 package com.szht.gpy.frame; 2 import java.awt.BorderLayout; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.awt.event.MouseAdapter; 6 import java.awt.event.MouseEvent; 7 import javax.swing.JButton; 8 import javax.swing.JFrame; 9 import javax.swing.JLabel; 10 import javax.swing.JPanel; 11 import javax.swing.JScrollPane; 12 import javax.swing.JTable; 13 import javax.swing.JTextField; 14 import javax.swing.ListSelectionModel; 15 import javax.swing.table.DefaultTableModel; 16 //维护表格 17 public class JTableDefaultTableModelTest extends JFrame{ 18 19 private DefaultTableModel tableModel; //表格模型对象 20 private JTable table; 21 private JTextField aTextField; 22 private JTextField bTextField; 23 24 public JTableDefaultTableModelTest() 25 { 26 super(); 27 setTitle("表格"); 28 setBounds(100,100,500,400); 29 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 30 String[] columnNames = {"A","B"}; //列名 31 String [][]tableVales={{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B4"},{"A5","B5"}}; //数据 32 tableModel = new DefaultTableModel(tableVales,columnNames); 33 table = new JTable(tableModel); 34 JScrollPane scrollPane = new JScrollPane(table); //支持滚动 35 getContentPane().add(scrollPane,BorderLayout.CENTER); 36 //jdk1.6 37 //排序: 38 //table.setRowSorter(new TableRowSorter(tableModel)); 39 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选 40 table.addMouseListener(new MouseAdapter(){ //鼠标事件 41 public void mouseClicked(MouseEvent e){ 42 int selectedRow = table.getSelectedRow(); //获得选中行索引 43 Object oa = tableModel.getValueAt(selectedRow, 0); 44 Object ob = tableModel.getValueAt(selectedRow, 1); 45 aTextField.setText(oa.toString()); //给文本框赋值 46 bTextField.setText(ob.toString()); 47 } 48 }); 49 scrollPane.setViewportView(table); 50 final JPanel panel = new JPanel(); 51 getContentPane().add(panel,BorderLayout.SOUTH); 52 panel.add(new JLabel("A: ")); 53 aTextField = new JTextField("A4",10); 54 panel.add(aTextField); 55 panel.add(new JLabel("B: ")); 56 bTextField = new JTextField("B4",10); 57 panel.add(bTextField); 58 final JButton addButton = new JButton("添加"); //添加按钮 59 addButton.addActionListener(new ActionListener(){//添加事件 60 public void actionPerformed(ActionEvent e){ 61 String []rowValues = {aTextField.getText(),bTextField.getText()}; 62 tableModel.addRow(rowValues); //添加一行 63 int rowCount = table.getRowCount() +1; //行数加上1 64 aTextField.setText("A"+rowCount); 65 bTextField.setText("B"+rowCount); 66 } 67 }); 68 panel.add(addButton); 69 70 final JButton updateButton = new JButton("修改"); //修改按钮 71 updateButton.addActionListener(new ActionListener(){//添加事件 72 public void actionPerformed(ActionEvent e){ 73 int selectedRow = table.getSelectedRow();//获得选中行的索引 74 if(selectedRow!= -1) //是否存在选中行 75 { 76 //修改指定的值: 77 tableModel.setValueAt(aTextField.getText(), selectedRow, 0); 78 tableModel.setValueAt(bTextField.getText(), selectedRow, 1); 79 //table.setValueAt(arg0, arg1, arg2) 80 } 81 } 82 }); 83 panel.add(updateButton); 84 85 final JButton delButton = new JButton("删除"); 86 delButton.addActionListener(new ActionListener(){//添加事件 87 public void actionPerformed(ActionEvent e){ 88 int selectedRow = table.getSelectedRow();//获得选中行的索引 89 if(selectedRow!=-1) //存在选中行 90 { 91 tableModel.removeRow(selectedRow); //删除行 92 } 93 } 94 }); 95 panel.add(delButton); 96 } 97 /** 98 * @param args 99 */ 100 public static void main(String[] args) { 101 // TODO Auto-generated method stub 102 JTableDefaultTableModelTest jTableDefaultTableModelTest = new JTableDefaultTableModelTest(); 103 jTableDefaultTableModelTest.setVisible(true); 104 } 105 106 }