package com.ethan.table;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class EditTableModelFrame extends JFrame {
private DefaultTableModel tableModel;
private JTable table;
private JTextField jtf1;
private JTextField jtf2;
public EditTableModelFrame() {
super();
setTitle("维护表格模型");
setBounds(100,100,400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane,BorderLayout.CENTER);
String[] columnNames = {"A","B"};
String[][] tableValues = {{"a1","b1"},{"a2","b2"},{"a3","b3"}};
tableModel = new DefaultTableModel(tableValues,columnNames);
table = new JTable(tableModel);
table.setRowSorter(new TableRowSorter<TableModel>(tableModel));
// table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int selectedRow = table.getSelectedRow();
int selectedCol = table.getSelectedColumn();
Object oa = tableModel.getValueAt(selectedRow, selectedCol);
Object ob = tableModel.getValueAt(selectedRow, selectedCol);
jtf1.setText(oa.toString());
jtf2.setText(ob.toString());
}
});
scrollPane.setViewportView(table);
final JPanel panel = new JPanel();
getContentPane().add(panel,BorderLayout.SOUTH);
panel.add(new JLabel("A: "));
jtf1 = new JTextField("A4",5);
panel.add(jtf1);
panel.add(new JLabel("B: "));
jtf2 = new JTextField("B4",5);
panel.add(jtf2);
final JButton addButton = new JButton("添加");
addButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//创建表格行数组
String[] rowValues = {jtf1.getText(),jtf2.getText()};
tableModel.addRow(rowValues);
int rowCount = table.getRowCount()+1;
jtf1.setText("A"+rowCount);
jtf2.setText("B"+rowCount);
}
});
panel.add(addButton);
final JButton upButton = new JButton("修改");
upButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int selectedRow = table.getSelectedRow();
int col = 0;
if(selectedRow!=-1) {
tableModel.setValueAt(jtf1.getText(), selectedRow, col++);
tableModel.setValueAt(jtf2.getText(), selectedRow, col++);
} else {
JOptionPane.showMessageDialog(null, "请选择一行!");
}
}
});
panel.add(upButton);
final JButton delButton = new JButton("删除");
delButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int[] selrows = table.getSelectedRows();
if(selrows!=null&&selrows.length>0) {
for(int row:selrows) {
System.out.println(row);
tableModel.removeRow(row);
}
JOptionPane.showMessageDialog(null, "删除成功!");
}
}
});
panel.add(delButton);
}
public static void main(String args[]) {
EditTableModelFrame a = new EditTableModelFrame();
a.setVisible(true);
}
}
Swing 之 JTable学习(二)
最新推荐文章于 2025-04-02 10:41:32 发布