Java JTable鼠标侦听器工作不正常
我的JTable(jtblLot)鼠标单击事件有时不会触发。主要依靠频繁的点击 下面是鼠标单击事件的代码Java JTable鼠标侦听器工作不正常,java,swing,concurrency,jtable,mouselistener,Java,Swing,Concurrency,Jtable,Mouselistener,我的JTable(jtblLot)鼠标单击事件有时不会触发。主要依靠频繁的点击 下面是鼠标单击事件的代码 private void jtblLot_MouseClicked(java.awt.event.MouseEvent evt) { int row = jtblLot.rowAtPoint(evt.getPoint()), currId = 0; int col = 3; lotId = jtblLot.getValueAt(row, col).
private void jtblLot_MouseClicked(java.awt.event.MouseEvent evt) {
int row = jtblLot.rowAtPoint(evt.getPoint()), currId = 0;
int col = 3;
lotId = jtblLot.getValueAt(row, col).toString();
if (jtblLot.getValueAt(row, 1) != null) {
sizeGrp_up = jtblLot.getValueAt(row, 1).toString();
} else {
sizeGrp_up = "0";
}
if (jtblLot.getValueAt(row, 4) != null) {
if (jtblLot.getValueAt(row, 4).toString().compareTo("") !=0)
{
currId = Integer.parseInt(jtblLot.getValueAt(row, 4).toString()) - 1;
}
} else {
sizeGrp_up = "0";
}
cmbCurrency.setSelectedIndex(currId);
jlblLotId.setText(lotId);
// Sets Model For Another JTable(jtblLGP) In My Form Get Data From DB
getLotGradePriceData();
//On Click I get The Focus To The Clicked Cell
int col_ = jtblLot.columnAtPoint(evt.getPoint());
jtblLot.setCellSelectionEnabled(true);
jtblLot.changeSelection(row, col_, false, false);
jtblLot.scrollRectToVisible(new Rectangle(jtblLot.getCellRect(row, col_, true)));
}
如果您需要处理每次单击,我建议您处理
mouseerelease
,而不是mouseClicked
// Sets Model For Another JTable(jtblLGP) In My Form Get Data From DB
getLotGradePriceData();
- ,您将阻止EDT,直到JDBC事件结束
- 使用
(所有到Swing GUI的输出,其XXX模型必须包装到Runnable#Thread
)或invokeLater
作为此作业的工作线程SwingWorker
- 尽可能使用最简单的方法
- 也许还有一些其他问题,为了更好地帮助您更快地发布一个简短的、可运行的、可编译的、使用局部变量而不是JDBC事件