实现监听JTable单元格 以达到不能随便输入信息的目的

实现监听JTable单元格 以达到不能随便输入信息的目的

有时候我们不希望用户在输入字符串的地方输入数字

或在输入数字的地方输入字符串

这就需要监听JTable的单元格

下面我们就来简单的实现一下:

首先我们需要为我们表格增加一个addTableModelListener监听事件


DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.addTableModelListener(new TableModelListener(){  @Override
	public void tableChanged(TableModelEvent e) {
		int row = table.getSelectedRow();
		int column = table.getSelectedColumn();
		String str1 = (String) dtm.getValueAt(row, column);
		if(str1.equals("Y")){
			dtm.setValueAt(qs, qrow, qcolumn);
		}
				

		}
		
});

以上代码的作用是

当表格数据发生变化的时候,就获得发生变化后的数据 str1

然后判断str1是否等于“Y“

如果等于,那就把数据恢复到输入之前的状态

dtm.setValueAt(qs, qrow, qcolumn);这个方法的作用是

将qs写入到qrow行,qcolumn列里面

现在我们就来看qs,qrow,qcolumn怎么获得

注意,上面的监听代码是变革内容发生变化时才会被触发


所以我们这里就还可以写一个监听事件,这个监听的作用时当鼠标单击或双击时触发

这里就要用到table的addMouseListener这个监听方法,代码如下


//监听表格内容
@Override
public void listener_table(JTable table) {
	DefaultTableModel dtm = (DefaultTableModel) table.getModel();
	
	table.addMouseListener(new MouseListener(){

		@Override
		public void mouseClicked(MouseEvent e) {
			qrow = table.getSelectedRow();
			qcolumn = table.getSelectedColumn();
			String str = (String) dtm.getValueAt(qrow, qcolumn);
			qs = str;
		}
		//按下
		@Override
		public void mousePressed(MouseEvent e) {
			
		}
			@Override
		public void mouseReleased(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		//鼠标移开
		@Override
		public void mouseExited(MouseEvent e) {
				
		}
这个监听,会实现很多接口,但是我们这里只需要实现mouseClicked接口


这个接口方法的作用就时将此时的一些基础数据保存起来,相当于保存修改数据之前的数据,已提供恢复

这样,就实现了监听单元格

以上为部分代码片段,这里就不再整合了


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img