点击JTable时鼠标事件失效,rowClicked方法提示未使用的问题求助
问题分析与解决:JTable点击事件未触发
你遇到的问题很典型——你重写了错误的方法名,导致你的点击逻辑根本不会被执行!
MouseAdapter类里并没有rowClicked这个回调方法,你自定义的这个方法只是一个普通方法,永远不会被鼠标点击事件触发,所以编译器才会提示它“未被使用”。
修正后的代码
把方法名改成MouseAdapter中定义的mouseClicked,这才是处理鼠标点击事件的正确回调方法:
public void fetchRec() { xtable.addMouseListener(new MouseAdapter() { // 加上@Override注解,编译期就能帮你检查重写是否正确 @Override public void mouseClicked(MouseEvent evt){ xtable = (JTable) evt.getSource(); int row = xtable.rowAtPoint(evt.getPoint()); // 如果你固定要获取ID列,直接指定列索引更靠谱,比如ID在第0列就写int column = 0; int column = xtable.columnAtPoint(evt.getPoint()); // 用toString()比拼接空字符串更优雅 String s = xtable.getModel().getValueAt(row, column).toString(); idLabelField.setText(s); } }); }
额外建议
- 务必加上
@Override注解:它会在编译阶段帮你校验是否正确重写了父类的方法,避免这种方法名写错的低级错误。 - 如果你的需求是点击行就获取该行的ID,而不是用户点击的任意列,直接把
column固定为ID所在的列索引(比如int column = 0;)会更符合预期,不用依赖用户点击的位置。
内容的提问来源于stack exchange,提问作者Hassan Chaudhry
相关产品推荐
相关产品推荐

