package _17;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class AddAndRemoveCells extends JFrame implements ActionListener {
private JTable table;
private DefaultTableModel defaultModel;
public AddAndRemoveCells() {
// 表头与初始数据
String[] name = { "First Name", "Last Name", "Sport" };
Object[][] data = {
{ "Kathy", "Smith", "Snowboarding" },
{ "John", "Doe", "Rowing" },
{ "Sue", "Black", "Knitting" },
{ "Jane", "White", "Speed reading" },
{ "Joe", "Brown", "Pool" }
};
// 初始化表格模型与表格
defaultModel = new DefaultTableModel(data, name);
table = new JTable(defaultModel);
JScrollPane scrollPan = new JScrollPane(table);
// 创建功能按钮
JButton button1 = new JButton("增加行");
JButton button2 = new JButton("增加列");
JButton button3 = new JButton("删除行");
JButton button4 = new JButton("删除列");
// 按钮面板布局
JPanel panel = new JPanel();
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
// 绑定事件监听器
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
// 窗口布局:按钮面板在北部,表格在中部
add(panel, BorderLayout.NORTH);
add(scrollPan, BorderLayout.CENTER);
}
@Override
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
// 增加列
if (cmd.equals("增加列")) {
defaultModel.addColumn("新增列");
}
// 增加行
if (cmd.equals("增加行")) {
Object[] newRow = new Object[defaultModel.getColumnCount()];
defaultModel.addRow(newRow);
}
// 删除列
if (cmd.equals("删除列")) {
int columnCount = defaultModel.getColumnCount() - 1;
if (columnCount >= 0) {
TableColumnModel columnModel = table.getColumnModel();
TableColumn tableColumn = columnModel.getColumn(columnCount);
columnModel.removeColumn(tableColumn);
defaultModel.setColumnCount(columnCount);
}
}
// 删除行
if (cmd.equals("删除行")) {
int rowCount = defaultModel.getRowCount() - 1;
if (rowCount >= 0) {
defaultModel.removeRow(rowCount);
defaultModel.setRowCount(rowCount);
}
}
// 刷新表格布局,确保修改生效
table.revalidate();
}
// 主方法:启动程序
public static void main(String args[]) {
AddAndRemoveCells frame = new AddAndRemoveCells();
frame.setSize(500, 300);
frame.setTitle("动态表格");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

被折叠的 条评论
为什么被折叠?



