维护表格模型

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);
	}
}

 

posted @ 2013-05-10 16:55  渲染y1丗浮華、  阅读(341)  评论(0编辑  收藏  举报