0

私のテーブルには、1) 追加、2) 削除、3) ステータスの更新の 3 つの操作があります。

ここで、1 と 2 は Jbuttonsl です

クリックすると1)新しい行が追加されます

クリックすると2)行が追加されます。

1と2)は設定どおりに機能していますが、最後の列のステータスを更新するために、この方法でコーディングしました

public void statusUpd() throws SQLException
{
        table.getModel().addTableModelListener(new TableModelListener()
        {
            @Override
            public void tableChanged(TableModelEvent tme) 
            {
                int row = table.getSelectedRow();
                if(!(row<0))
                {
                    String name=(String)(table.getModel().getValueAt(row, 0));
                    String status = (String)(table.getModel().getValueAt(row, 3));
                    String update = "UPDATE "+deptName+ " SET Status = ? WHERE Name = ?";
                    try 
                    {
                        conn = ac.getConnection();
                        stmt = conn.prepareStatement(update);

                        stmt.setString(1, status);
                        stmt.setString(2, name);
                        stmt.executeUpdate();
                    } 
                    catch (SQLException | ClassNotFoundException ex)
                    {
                        ex.printStackTrace();                            
                    }
                    finally
                    {
                        try
                        {               
                            if(stmt != null){stmt.close();}
                            if(conn != null) {conn.close();}
                        }
                        catch(SQLException e){}
                     }
                }
            }
        });


}

しかし、このメソッドは追加または削除ボタンがクリックされたときにリッスンします。これを回避する方法はありますか?

4

2 に答える 2

1

TableModelEvent操作のタイプを見つけることができる getType メソッドがありますtableChangedしたがって、メソッドの先頭にコードを含めることができます。

if(tme.getType() != TableModelEvent.INSERT
        && tme.getType() != TableModelEvent.DELETE)
{
    //do stuff
}

または同等に

if(tme.getType() != TableModelEvent.UPDATE)
{
    //do stuff
}
于 2013-03-13T13:02:56.893 に答える
-2

最善の方法ではないかもしれませんが、クラス変数を追加して、ボタンをクリックしたことを示すことができます。

boolean buttonClicked = false;

[追加] または [削除] をクリックしたら、それを true に設定し、これを更新コードの先頭に配置します。

if(buttonClicked){
  buttonClicked = false;
  return;
}
于 2013-03-13T12:59:02.537 に答える