JTable表格案例

  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 }

 

posted @ 2018-10-29 15:35  ^sun^  阅读(640)  评论(0编辑  收藏  举报