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