维护表格模型
package com.test.sort; import java.awt.BorderLayout; import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.AbstractButton; import javax.swing.DefaultButtonModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; public class ExampleFrame03 extends JFrame { private DefaultTableModel tableModel; private JTable table; private JTextField atTextField; private JTextField btTextField; public static void main(String[] args) { ExampleFrame03 frame03 = new ExampleFrame03(); frame03.setVisible(true); } public ExampleFrame03() { super(); setTitle("维护表格模型 "); //定义表格的长宽高 setBounds(100, 100, 250, 150); //关闭表格 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //定义了一个面板 final JScrollPane scrollPane = new JScrollPane(); //定义到边界布局中间 getContentPane().add(scrollPane, BorderLayout.CENTER); //定义表格数组 String[] columnNames = { "A", "B" }; //定义表格数据数组 String[][] tableValues = { { "A", "B" }, { "A1", "B1" }, { "A2", "B2" }, { "A3", "B3" }, { "A4", "B4" } }; //创建指定表格列名和表格数据的表格模型 tableModel = new DefaultTableModel(tableValues, columnNames); //将表格模式实例化到table中 table = new JTable(tableModel); //设置表格模式为单选 table.setRowSorter(new TableRowSorter(tableModel)); //鼠标事件监听器 table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table.addMouseListener(new MouseListener() { private AbstractButton btTextField; @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseClicked(MouseEvent e) { //Clicked点击 // TODO Auto-generated method stub //获得被选中行的 索引 int selectedRow = table.getSelectedRow(); //从表格模型中获得指定单元格的值 Object oa = table.getValueAt(selectedRow, 0); Object ob = table.getValueAt(selectedRow, 1); //蒋值赋给文本框 atTextField.setText(oa.toString()); btTextField.setText(ob.toString()); } }); scrollPane.setViewportView(table); final JPanel panel = new JPanel(); //设置布局方向为下方 getContentPane().add(panel, BorderLayout.SOUTH); //给面板中添加布局 panel.add(new JLabel("A: ")); //给文本框赋值 atTextField = new JTextField("A4:", 10); //将文本框添加到面板 panel.add(atTextField); // panel.add(new JLabel("b: ")); btTextField = new JTextField("B4", 10); panel.add(btTextField); final JButton addButton = new JButton("添加"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String[] rowValues = { atTextField.getText(), btTextField.getText() }; tableModel.addRow(rowValues); //向表中添加一行 int rowconut = table.getRowCount() + 1; atTextField.setText("A" + rowconut); btTextField.setText("B" + rowconut); } }); panel.add(addButton); final JButton updbbuButton = new JButton("修改"); updbbuButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //获得被选中行的索引 int selecteedRow = table.getSelectedRow(); if (selecteedRow != -1) {//判断是否被选中的行 tableModel.setValueAt(atTextField.getText(), selecteedRow, 0); tableModel.setValueAt(btTextField.getText(), selecteedRow, 1); } } }); panel.add(updbbuButton); final JButton delbButton = new JButton("删除"); delbButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int selleceedRow = table.getSelectedRow(); if (selleceedRow != -1) { tableModel.removeRow(selleceedRow); } } }); panel.add(delbButton); } }