How can I Update a JTable?
Hi... I have a JTable in my application, I load a Table from a DataBase in the JTable, and I want to Update the JTable...
I have this code:
class Tarifas_Mainextends JDialogimplements ActionListener/*, MouseListener*/{
JPanel Main_Pane;
JScrollPane Panel_Main;
JTable Tarifas_Tabla;
Tabla_Tarifas Tabla_Datos;
TableColumn Columna;
JPanel Panel_Cambio;
JRadioButton Radio_1_2;
JRadioButton Radio_3_10;
ButtonGroup Radio_Group;
JTextField[] Txt_Valor_1_2;
JTextField[] Txt_Valor_3_10;
JLabel[] Lbl_Hor;
JButton Btn_Cambiar_Valores;
JButton Btn_Guardar;
JButton Btn_Cancelar;
TitledBorder Borde_Cambio;
int cant;
Connection conec;
Statement state;
ResultSet rec;
//** Crea una nueva instancia de Tarifas_Main */
public Tarifas_Main(){
setTitle("Tarifas de las Mesas");
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
Tabla_Datos =new Tabla_Tarifas();
Tabla_Datos.fireTableDataChanged();
Tarifas_Tabla =new JTable(Tabla_Datos);
Columna =null;
cant = -1;
try{
cant = Tarifas_Tabla.getColumnCount();
}
catch(Exception e){}
for(int i = 0; i<cant; i++){
Columna = Tarifas_Tabla.getColumnModel().getColumn(i);
Columna.setResizable(false);
switch (i){
case 0: Columna.setPreferredWidth(30);break;
case 1: Columna.setPreferredWidth(50);break;
case 2: Columna.setPreferredWidth(40);break;
case 3: Columna.setPreferredWidth(50);break;
case 4: Columna.setPreferredWidth(40);break;
case 5: Columna.setPreferredWidth(50);break;
case 6: Columna.setPreferredWidth(40);break;
}
}
Tarifas_Tabla.setBackground(Color.WHITE);
Tarifas_Tabla.setGridColor(Color.DARK_GRAY.darker());
Panel_Main =new JScrollPane(Tarifas_Tabla);
Panel_Main.setBackground(Color.GREEN.darker());
Panel_Main.setBounds(20,20,550,179);
Radio_1_2 =new JRadioButton("Mesas 1 y 2");
Radio_1_2.setBounds(10,45,100,20);
Radio_1_2.addActionListener(this);
Radio_3_10 =new JRadioButton("Mesas 3 a 10");
Radio_3_10.setBounds(10,85,100,20);
Radio_3_10.addActionListener(this);
Radio_Group =new ButtonGroup();
Radio_Group.add(Radio_1_2); Radio_Group.add(Radio_3_10);
Borde_Cambio =new TitledBorder(new LineBorder(Color.BLACK),"Cambiar Valores", TitledBorder.CENTER, TitledBorder.TOP);
Panel_Cambio =new JPanel(null);
Panel_Cambio.add(Radio_1_2); Panel_Cambio.add(Radio_3_10);
Panel_Cambio.setBounds(40,220,510,120);
Panel_Cambio.setBorder(Borde_Cambio);
Lbl_Hor =new JLabel[3];
Txt_Valor_1_2 =new JTextField[3];
Txt_Valor_3_10 =new JTextField[3];
for (int i=0, largo = 80, largo_fijo = 80, largo2 = 80, largo_fijo2 = 50; i><3; i++){
Lbl_Hor[i] =new JLabel("Horario " + (i+1));
Txt_Valor_1_2[i] =new JTextField("");
Txt_Valor_3_10[i] =new JTextField("");
Lbl_Hor[i].setBounds(60 + largo,25,largo_fijo,15);
Txt_Valor_1_2[i].setBounds(60 + largo2,45,largo_fijo2,20);
Txt_Valor_3_10[i].setBounds(60 + largo2,85,largo_fijo2,20);
largo = largo + 80;
largo2 = largo2 + 80;
Txt_Valor_1_2[i].setHorizontalAlignment(JTextField.RIGHT);
Txt_Valor_3_10[i].setHorizontalAlignment(JTextField.RIGHT);
Panel_Cambio.add(Lbl_Hor[i]);
Panel_Cambio.add(Txt_Valor_1_2[i]);
Panel_Cambio.add(Txt_Valor_3_10[i]);
}
Btn_Guardar =new JButton("Guardar");
Btn_Guardar.setBounds(380,40,100,30);
Btn_Guardar.setFocusPainted(false);
Btn_Guardar.addActionListener(this);
Btn_Cancelar =new JButton("Cancelar");
Btn_Cancelar.setBounds(380,75,100,30);
Btn_Cancelar.setFocusPainted(false);
Btn_Cancelar.addActionListener(this);
Panel_Cambio.add(Btn_Guardar); Panel_Cambio.add(Btn_Cancelar);
Panel_Cambio.setVisible(false);
Btn_Cambiar_Valores =new JButton("Cambiar Valores");
Btn_Cambiar_Valores.setBounds(60,220,470,80);
Btn_Cambiar_Valores.setIcon(new ImageIcon(getClass().getResource("/Images/08.png")));
Btn_Cambiar_Valores.setFocusPainted(false);
Btn_Cambiar_Valores.addActionListener(this);
Panel_Main.updateUI();
Main_Pane =new JPanel(null);
Main_Pane.setBackground(Color.GREEN.darker());
Main_Pane.add(Panel_Main);
Main_Pane.add(Panel_Cambio);
Main_Pane.add(Btn_Cambiar_Valores);
setLayout(new BorderLayout());
add(Main_Pane, BorderLayout.CENTER);
setResizable(false);
setSize(600,400);
setLocationRelativeTo(null);
setVisible(true);
}
publicvoid actionPerformed(ActionEvent ae){
if (ae.getSource().equals(Btn_Cambiar_Valores)){
Btn_Cambiar_Valores.setVisible(false);
Panel_Cambio.setVisible(true);
}
if (ae.getSource().equals(Radio_1_2)){
for (int i=0, j=0; i<3; i++){
Txt_Valor_1_2[i].setEnabled(true);
Txt_Valor_3_10[i].setEnabled(false);
Txt_Valor_1_2[i].setText(Tarifas_Tabla.getValueAt(1,j+2).toString());
Txt_Valor_3_10[i].setText("");
j = j + 2;
}
}
if (ae.getSource().equals(Radio_3_10)){
for (int i=0, j=0; i<3; i++){
Txt_Valor_3_10[i].setEnabled(true);
Txt_Valor_1_2[i].setEnabled(false);
Txt_Valor_3_10[i].setText(Tarifas_Tabla.getValueAt(3,j+2).toString());
Txt_Valor_1_2[i].setText("");
j = j + 2;
}
}
if (ae.getSource().equals(Btn_Cancelar)){
Panel_Cambio.setVisible(false);
Btn_Cambiar_Valores.setVisible(true);
}
if (ae.getSource().equals(Btn_Guardar)){
int val1, val2, val3;
if (Radio_1_2.isSelected()){
val1 = Integer.parseInt(Txt_Valor_1_2[0].getText().toString());
val2 = Integer.parseInt(Txt_Valor_1_2[1].getText().toString());
val3 = Integer.parseInt(Txt_Valor_1_2[2].getText().toString());
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conec = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/POOL/Data/BaseDat.MDB");
state = conec.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
state.executeUpdate("Update Tarifas set mesa_val1 = " + val1 +", mesa_val2 = " + val2 +", mesa_val3 = " + val3 +" where mesa_nro = 1");
state.executeUpdate("Update Tarifas set mesa_val1 = " + val1 +", mesa_val2 = " + val2 +", mesa_val3 = " + val3 +" where mesa_nro = 2");
state.close();
conec.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
}
else{
val1 = Integer.parseInt(Txt_Valor_3_10[0].getText().toString());
val2 = Integer.parseInt(Txt_Valor_3_10[1].getText().toString());
val3 = Integer.parseInt(Txt_Valor_3_10[2].getText().toString());
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conec = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/POOL/Data/BaseDat.MDB");
state = conec.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
for (int i=3; i<=10; i++){
state.executeUpdate("Update Tarifas set mesa_val1 = " + val1 +", mesa_val2 = " + val2 +", mesa_val3 = " + val3 +" where mesa_nro = " + i);
}
state.close();
conec.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
}
/////////////////////////////////////////////////////////////////////////////////
//Here is where I need to Update the JTable//
/////////////////////////////////////////////////////////////////////////////////
}
}
}
class Tabla_Tarifasextends AbstractTableModel{
int filas = -1;
Connection conec;
Statement state;
ResultSet rec;
Tabla_Tarifas(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conec = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/POOL/Data/BaseDat.MDB");
state = conec.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rec = state.executeQuery("Select * from Tarifas order by mesa_nro");
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e.getMessage());
}
}
publicint getRowCount(){
if (this.filas==-1){
try{
rec.last();
this.filas=rec.getRow();
}
catch (SQLException e){}
}
return filas;
}
public Object getValueAt(int r,int c){
Object x=null;
try{
rec.absolute(r+1);
x = rec.getString(c+1);
}
catch (SQLException e){}
return x;
}
publicint getColumnCount(){
int x = -1;
try{
x = rec.getMetaData().getColumnCount();
}
catch(SQLException s){}
return x;
}
public String getColumnName(int c){
String nom="";
switch(c){
case 0: nom="N?Mesa";break;
case 1: nom="Horario 1";break;
case 2: nom="Valor Hora";break;
case 3: nom="Horario 2";break;
case 4: nom="Valor Hora";break;
case 5: nom="Horario 3";break;
case 6: nom="Valor Hora";break;
}
return nom;
}
publicboolean isEditing(){
returntrue;
}
publicboolean setSizeColumnsToFit(){
returnfalse;
}
}
Please help me... I need it...
Regards... and Thanks...

