我們正在教室中執行「Maintainer」程序以使用MySQL和Java NetBeans管理數據庫。我們很好,但我們想知道如何創建某種事件來通過文本框/點擊插入/修改信息到數據庫時禁用「更新按鈕」。在插入文本框時禁用更新按鈕以進行更新
執行項目時,我們可以通過在表格的選中/單擊文本框中寫入/修改數據,直接將數據修改爲MySQL數據庫;修改完成後,我們需要按ENTER所以修改得到寫入,然後我們按Modificar按鈕使更新生效。
我們想知道的是,我們如何切換Modificar按鈕在文本框激活時編輯時不可點擊。因爲如果我們不按ENTER首先修改完成後,點擊更新按鈕,當文本框處於活動狀態時,由於數據無效而拋出錯誤。
這裏我們可以通過點擊文本框(*紅框)來編輯信息,同時這樣做(當文本框點擊並編輯信息時),我們希望「更新按鈕」被禁用/不可點擊(綠色圓圈)。
到目前爲止,這裏是我們的代碼的事件,但並不是我們想要的: (其中「btnactualizar」的更新按鈕和「tabla_cliente」是包含文本框表)
private void tabla_clienteKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER){
btnactualizar.setEnabled(true);
}
}
這是更新按鈕:
private void btnactualizarActionPerformed(java.awt.event.ActionEvent evt) {
String Rut = String.valueOf(tabla_cliente.getValueAt(tabla_cliente.getSelectedRow(), 0));
String Nombre = String.valueOf(tabla_cliente.getValueAt(tabla_cliente.getSelectedRow(), 1));
String Apellido = String.valueOf(tabla_cliente.getValueAt(tabla_cliente.getSelectedRow(), 2));
String Patente = String.valueOf(tabla_cliente.getValueAt(tabla_cliente.getSelectedRow(), 3));
int conf = JOptionPane.showConfirmDialog(null, "Estas seguro de actualizar? ", "mensaje", JOptionPane.YES_NO_OPTION, JOptionPane.YES_NO_OPTION);
if (conf == JOptionPane.OK_OPTION) {
exeCliente.actualizar_Cliente(Rut, Nombre, Apellido, Patente);
}
}
這是更新方法:
public void actualizar_Cliente(String run,String nombre, String apellido, String patente)
{
try{
conectar();
String SQL = "UPDATE CLIENTE SET Nombre='"+nombre+"', Apellido='"+apellido+"', Patente='"+patente+"' WHERE Rut='"+run+"';";
sentencia.executeUpdate(SQL);
JOptionPane.showMessageDialog(null,"Datos Actualizados");
conexion.close();
sentencia.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Error:" +e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
}
}
非常感謝您爲我們提供的任何答案。
感謝您的回答!我正在尋找關於如何實現「prepareEditor」和「editingStopped」的信息,但我只是不明白。我需要創建一個類?主Jframe在哪裏?另一班? 以前從未使用「@override」,抱歉打擾您,我們是學生,您的解決方案是我們還沒有學習或看到的東西。 我想要親自問我的老師,但我不認爲他知道答案。 非常感謝您提前 –
我們的jTables包含在jFrame中。也許我應該去每個jTable屬性的「自定義代碼」? –
我的意思是,所有例子都看過,看起來不像我們的項目。我們只有一個JFrame,然後像「show」,「insert」這樣的所有公共空白在那裏,然後我們爲每個「客戶」,「車輛」和「註冊」有3個「mantainers」。我們沒有別的。我們必須創建一個新的包?新界面? –