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);
}
}
转载于:https://www.cnblogs.com/maxiaoyan123-com/archive/2013/05/10/3071488.html