java从入门到精髓 - Swing表格JTable利用tableModel添加行修改行删除行

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
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;
//维护表格
public class JTableDefaultTableModelTest extends JFrame{

    
private DefaultTableModel tableModel;   //表格模型对象
    private JTable table;
    
private JTextField aTextField;
    
private JTextField bTextField;
    
    
public JTableDefaultTableModelTest()
    {
        
super();
        setTitle(
"表格");
        setBounds(
100,100,500,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        String[] columnNames 
= {"A","B"};   //列名
        String [][]tableVales={{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B4"},{"A5","B5"}}; //数据
        tableModel = new DefaultTableModel(tableVales,columnNames);
        table 
= new JTable(tableModel);
        JScrollPane scrollPane 
= new JScrollPane(table);   //支持滚动
        getContentPane().add(scrollPane,BorderLayout.CENTER);
        
//jdk1.6
        
//排序:
        
//table.setRowSorter(new TableRowSorter(tableModel));
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  //单选
        table.addMouseListener(new MouseAdapter(){    //鼠标事件
            public void mouseClicked(MouseEvent e){
                
int selectedRow = table.getSelectedRow(); //获得选中行索引
                Object oa = tableModel.getValueAt(selectedRow, 0);
                Object ob 
= tableModel.getValueAt(selectedRow, 1);
                aTextField.setText(oa.toString());  
//给文本框赋值
                bTextField.setText(ob.toString());
            }
        });
        scrollPane.setViewportView(table);
        
final JPanel panel = new JPanel();
        getContentPane().add(panel,BorderLayout.SOUTH);
        panel.add(
new JLabel("A: "));
        aTextField 
= new JTextField("A4",10);
        panel.add(aTextField);
        panel.add(
new JLabel("B: "));
        bTextField 
= new JTextField("B4",10);
        panel.add(bTextField);
        
final JButton addButton = new JButton("添加");   //添加按钮
        addButton.addActionListener(new ActionListener(){//添加事件
            public void actionPerformed(ActionEvent e){
                String []rowValues 
= {aTextField.getText(),bTextField.getText()};
                tableModel.addRow(rowValues);  
//添加一行
                int rowCount = table.getRowCount() +1;   //行数加上1
                aTextField.setText("A"+rowCount);
                bTextField.setText(
"B"+rowCount);
            }
        });
        panel.add(addButton);  
        
        
final JButton updateButton = new JButton("修改");   //修改按钮
        updateButton.addActionListener(new ActionListener(){//添加事件
            public void actionPerformed(ActionEvent e){
                
int selectedRow = table.getSelectedRow();//获得选中行的索引
                if(selectedRow!= -1)   //是否存在选中行
                {
                    
//修改指定的值:
                    tableModel.setValueAt(aTextField.getText(), selectedRow, 0);
                    tableModel.setValueAt(bTextField.getText(), selectedRow, 
1);
                    
//table.setValueAt(arg0, arg1, arg2)
                }
            }
        });
        panel.add(updateButton);
        
        
final JButton delButton = new JButton("删除");
        delButton.addActionListener(
new ActionListener(){//添加事件
            public void actionPerformed(ActionEvent e){
                
int selectedRow = table.getSelectedRow();//获得选中行的索引
                if(selectedRow!=-1)  //存在选中行
                {
                    tableModel.removeRow(selectedRow);  
//删除行
                }
            }
        });
        panel.add(delButton);
    }
    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        JTableDefaultTableModelTest jTableDefaultTableModelTest = new JTableDefaultTableModelTest();
        jTableDefaultTableModelTest.setVisible(
true);
    }

}

 

posted @ 2010-09-03 12:56  叮当小马  阅读(36561)  评论(0编辑  收藏  举报