4

私の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).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)));

} 
4

2 に答える 2

6

クリックごとに処理する必要がある場合は、のmouseReleased代わりに処理することをお勧めしますmouseClicked

于 2013-03-25T11:35:32.873 に答える
1
// Sets Model For Another JTable(jtblLGP) In My Form Get Data From DB
getLotGradePriceData();
  • この方法でSwingGUIを更新することはお勧めできません。JDBCイベントが終了するまでEDTをブロックします。

  • 使用Runnable#Thread(Swing GUIへのすべての出力、そのXxxModelはラップする必要がありますinvokeLater)またはSwingWorkerこのジョブのワーカースレッドとして、

  • 可能な最も簡単な方法としてListSelectioListenerを使用する

  • SSCCEをより早く投稿するために、短く、実行可能で、コンパイル可能で、JDBCイベントの代わりにローカル変数を使用するという別の問題がいくつかあるかもしれません。

于 2013-03-25T11:48:55.080 に答える