实现监听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/天,具体规则查看活动详情