|
|
1
0
因为您必须测试点击,所以不能使用模型的方法来进行测试,所以您应该尝试重写jtable public void changeSelection(int rowIndex, int columnIndex, boolean toggle, oolean extend) 方法。如果该行被锁定,则不要调用super.changeselection,它应使该行保持未选中状态。 |
|
|
2
2
在编辑/设置值之前,通过table model.is cell editable(row,col)询问表模型是否可编辑。在这里你可以实现你的锁。在tableModel.setValue(row,col,val)之后,您应该解除锁定。但是。锁定操作需要花费大量时间,并使您的用户界面不负责任。而且很糟糕。尝试不同的方法。懒惰的失败怎么办?锁定行,检查数据的有效性,如果数据更新则失败。如果数据正常,就把它们放下。解锁。 |
|
|
3
1
Oracle有一个很好的方法来处理这个问题,但我不知道它有多普遍适用。 在Oracle中,您可以使用 用于更新 在select语句中锁定您读取的记录。 例如,如果要获取要显示的行:
这将允许读取但阻止更新。如果另一个事务有一个锁,那么您的事务将一直等到它变为可用(或最终超时)。如果希望语句在尝试锁定时引发异常,则添加 诺瓦伊特 .
如果该行已被锁定,您将得到:
希望有帮助。 |
|
|
4
0
相反,您可以等到用户实际更改了某个内容,然后重写jtable.editingstop在那里完成工作(甚至可以检查值是否更改)。 这样,在用户实际更改某些内容之前,不会进行锁定。 |
|
|
Jörg · 如何更改多行JButton中的行距 1 年前 |
|
|
Clive Galway · 将摆动元件包装在面板顶部 2 年前 |
|
|
AlexHomeBrew · 如何将图像放在左上角的滚动窗格中 2 年前 |
|
|
Vithor Roder · Java CellEditor 2 年前 |
|
|
Dromlius · JPanel透支重叠的JComcoBox 2 年前 |