删除选中行的数据(删除一行,删除多行)
获取表格选中行数据(获取选中的一行或多行数据,并显示在文本域中)
设置JTable的某一列单元格编辑时为使用JComboBox(并设置双击单元格才启用JComboBox,默认单击使用)
public class TableDemo1 extends JFrame {
private JPanel contentPane;
private JTable table;
private DefaultTableModel tableModel;
private JTextArea textArea;
private String[] column=new String[] {"编号", "姓名", "职位", "领导", "入职", "工资", "提成", "部门"};
* Launch the application.
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TableDemo1 frame = new TableDemo1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
* Create the frame.
public TableDemo1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 450);
this.setLocationRelativeTo(null);
this.setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(60, 15, 465, 25);
contentPane.add(panel);
panel.setLayout(new GridLayout(0, 4, 50, 0));
JButton setBtn = new JButton("赋值");
setBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setData();
panel.add(setBtn);
JButton addBtn = new JButton("增加");
addBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addData();
panel.add(addBtn);
JButton deleteBtn = new JButton("删除");
deleteBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
deleteData();
panel.add(deleteBtn);
JButton getBtn = new JButton("取值");
getBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getData();
panel.add(getBtn);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(60, 150, 468, 243);
contentPane.add(scrollPane);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null},
column
scrollPane.setViewportView(table);
tableModel=(DefaultTableModel) table.getModel(); //获得表格模型
// tableModel.setRowCount(0); //清空表格中的数据
table.setModel(tableModel);
textArea = new JTextArea();
JScrollPane scroll=new JScrollPane(textArea);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setBounds(60, 56, 465, 76);
contentPane.add(scroll);
//设置JTable的某一列单元格编辑时使用JComboBox:
String[] items = { "选项1", "选项2", "选项3", "选项4" };
JComboBox editor = new JComboBox( items );
DefaultCellEditor dce = new DefaultCellEditor(editor);
dce.setClickCountToStart(2);//双击时才能使用JComboBox
table.getColumnModel().getColumn(2).setCellEditor(dce);//设置在表格的第三列
this.style();
//赋值(填充数据:给单元格赋值或使用二维数组直接设置表格数据)
public void setData() {
Object[][] datas=new Object[3][column.length];
for(int i=0;i<3;i++) {
for(int j=0;j<8;j++) {
table.setValueAt(i+""+j,i, j);//给单元格赋值
datas[i][j]=i+""+j;
// table.setModel(new DefaultTableModel(datas,column));//使用二维数组设置表格数据
// tableModel=(DefaultTableModel) table.getModel();//使用二维数组设置表格数据后更新tableModel
public void addData() {
tableModel.setRowCount(tableModel.getRowCount()+1);//增加空行,手动编辑赋值
//直接增加一行数据:
// tableModel.addRow(new Object[] {123, "张三", "程序员", 7839, new Date(), 345.67, 234, 20});
table.setModel(tableModel);
public void deleteData()
tableModel=(DefaultTableModel) table.getModel();
int[] selectedRows=table.getSelectedRows();
for(int i=0;i<selectedRows.length;i++)
tableModel.removeRow(selectedRows[0]);//不是selectedRows[i]
table.setModel(tableModel);
public void getData() {
int[] rows=table.getSelectedRows();
Object[][] objects= new Object[rows.length][8];
for(int i=0;i<rows.length;i++) {
for(int j=0;j<8;j++) {
objects[i][j]=table.getValueAt(rows[i], j);//注意是rows[i],不是i
for(int i=0;i<objects.length;i++){
for(int j=0;j<objects[i].length;j++){
textArea.insert(objects[i][j]+" ",textArea.getDocument().getLength());
textArea.insert("\n",textArea.getDocument().getLength());
//设置表格样式
public void style() {
table.setFont(new Font("微软雅黑", Font.PLAIN, 20));
table.setForeground(Color.blue); //颜色
table.setRowHeight(30);//设置行高
JTableHeader tableHeader = table.getTableHeader();//表头
tableHeader.setPreferredSize(new Dimension(tableHeader.getWidth(),30));//设置表头行高
tableHeader.setFont(new Font("微软雅黑", Font.PLAIN, 20));
tableHeader.setForeground(Color.blue);