我想编辑JTable
中的特定单元格,然后将其保存在数据库中。我正在使用SQL。我尝试了很多代码而且没有找到任何代码。
这是我的表,
我已经填充了数据库中的数据。如何编辑任何单元格并按Enter键将其保存在数据库中?或者使用JButton
?
我设法选择一行,使用JTextField
进行编辑并保存,但最好只在单元格中进行编辑。
编辑:
我粘贴我的代码以帮助您理解我的问题。
这就是我创建表格的方式:
这就是我填充表格的方式。
所以,我想编辑JTable
中的单元格并保存数据库中的更改。
答案 0 :(得分:0)
由于我没有得到一个好的答案,我最后来到了我自己!我做的!! 将解决方案发布到我的问题。 首先,我做到了这一点。
public void TableCuentas(){
String[] columnas = {"ID","FECHA", "TIPO MATERIAL", "KILOGRAMOS" , "$ POR KILO", "DEBEMOS", "SALDO"};
modelo = new DefaultTableModel();
desplazamiento = new JScrollPane();
desplazamiento.setBounds(20, 173, 673, 277);
frameCC.getContentPane().add(desplazamiento);
modelo.setColumnIdentifiers(columnas);
desplazamiento.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
desplazamiento.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
frameCC.getContentPane().add(desplazamiento, BorderLayout.NORTH);
tabla = new JTable();
desplazamiento.setViewportView(tabla);
tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabla.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
tabla.setFillsViewportHeight(true);
tabla.setModel(modelo);
tabla.setAutoCreateRowSorter(true);
tabla.setColumnSelectionAllowed(true);
tabla.setRowSelectionAllowed(true);
modelo.addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent e) {
actualizatabla(e);
}
});
if (tabla.getCellEditor() != null) {
tabla.getCellEditor().stopCellEditing();
}
}
然后我做了这个
protected void actualizatabla(TableModelEvent e) {
if (e.getType() == TableModelEvent.UPDATE) {
modelo = (DefaultTableModel) ((TableModel) (e.getSource()));
int fila = e.getFirstRow();
int columna = e.getColumn();
String dato=String.valueOf(modelo.getValueAt(tabla.getSelectedRow(),tabla.getSelectedColumn()));
texto.setText(dato);
sdf = new SimpleDateFormat("dd-MM-yyyy");
String strCodigo = modelo.getValueAt(fila, 0).toString();
String sSQL = "";
if (columna==1){
sSQL = "UPDATE materiales SET fechaIngreso=? WHERE ID=("+strCodigo+")" ;
}
if (columna==2){
sSQL = "UPDATE materiales SET tipoMat=? WHERE ID=("+strCodigo+")" ;
}
if (columna==3){
sSQL = "UPDATE materiales SET kg=? WHERE ID=("+strCodigo+")" ;
}
if (columna==4){
sSQL = "UPDATE materiales SET precio=? WHERE ID=("+strCodigo+")" ;
}
lblNewLabel_1.setText(String.valueOf(strCodigo));
Connection conexion = null;
try {
conexion= (Connection) DriverManager.getConnection("jdbc:mysql://SERVER:3306/material?useSSL=false","admin" ,"admin");
PreparedStatement pstm = (PreparedStatement) conexion.prepareStatement(sSQL);
pstm.execute();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Error" + ex);
}
}
}
现在我可以编辑一个表格单元格,当我按下输入单元格时,只需更改该值并将其直接保存到数据库中。我希望它可以帮助别人。