java 表格监听_Java表格事件及线程示例

本示例展示了如何在Java中实现表格监听,包括插入、修改和删除行的事件处理。通过创建一个`DefaultTableModel`,添加`TableModelListener`来捕获表格变化,并在用户点击添加和删除按钮时更新表格内容。
摘要由CSDN通过智能技术生成

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

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.event.TableModelEvent;

import javax.swing.event.TableModelListener;

import javax.swing.table.DefaultTableModel;public classTableModelEvent_Example extends JFrame {privateJTable table;privateDefaultTableModel tableModel;privateJTextField aTextField;privateJTextField bTextField;public static voidmain(String[] args) {//TODO Auto-generated method stub

TableModelEvent_Example frame=newTableModelEvent_Example();

frame.setVisible(true);

}publicTableModelEvent_Example() {

super();

setTitle("表格模型事件示例");

setBounds(320, 260, 575, 325);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container container=getContentPane();

final JScrollPane scrollPane=newJScrollPane();

container.add(scrollPane, BorderLayout.CENTER);

String[] columnsNames= {"A","B"};

String[][] rowValues= {{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B4"}};//创建表格模型对象

tableModel=newDefaultTableModel(rowValues,columnsNames);//为表格模型添加事件监听器

tableModel.addTableModelListener(newTableModelListener() {public voidtableChanged(TableModelEvent e) {int type = e.getType(); //获取事件的类型

int row=e.getFirstRow()+1; //获得触发此次事件的表格行索引

int column=e.getColumn()+1; //获得触发此次事件的表格列索引

if(type==TableModelEvent.INSERT) { //判断是否由插入行触发

System.out.println("此次事件由 插入 行触发");

System.out.println("此次插入的是第"+row+"行!");

}else if(type==TableModelEvent.UPDATE) {

System.out.println("此次事件由 修改 行触发");

System.out.println("此次修改的是第"+row+"行!");

}else if (type==TableModelEvent.DELETE) {

System.out.println("此次事件由 删除 行触发");

System.out.println("此次删除的是第"+row+"行!");

}else{

System.out.println("此次事件由 其他原因 触发");

}

}

});

table=new JTable(tableModel); //利用表格模型对象创建表格对象

scrollPane.setViewportView(table);

final JPanel panel=newJPanel();

container.add(panel, BorderLayout.SOUTH);

final JLabel aLabel=new JLabel("A:");

panel.add(aLabel);

aTextField=new JTextField(15);

panel.add(aTextField);

final JLabel bLabel=new JLabel("B:");

panel.add(bLabel);

bTextField=new JTextField(15);

panel.add(bTextField);

final JButton addButton=new JButton("添加");

addButton.addActionListener(newActionListener() {public voidactionPerformed(ActionEvent e) {

String[] rowValues={aTextField.getText(),bTextField.getText()};

tableModel.addRow(rowValues);//向表格模型中添加一行

aTextField.setText(null);

bTextField.setText(null);

}

});

panel.add(addButton);

final JButton delButton=new JButton("删除");

delButton.addActionListener(newActionListener() {public voidactionPerformed(ActionEvent e) {int[] selectedRows=table.getSelectedRows(); //获得表格中的选中行

for(int row=0;row

tableModel.removeRow(selectedRows[row]-row); //从表格模型中移除表格中的选中行

}

}

});

panel.add(delButton);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值