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...

[17569 byte] By [MetalTuxa] at [2007-11-26 17:48:26]
# 1

Read the DefaultTableModel API:

If you want to update an existing cell you use setValueAt(...);

If you want to add a new row you use addRow(...);

If you want to replace the existing TableModel then you do:

DefaultTableModel model = new DefaultTableModel(....);

table.setModel( model );

camickra at 2007-7-9 5:00:48 > top of Java-index,Desktop,Core GUI APIs...
# 2
Thanks... you really help me a lot...Sorry my English... but thanks again... It's work....Regards...
MetalTuxa at 2007-7-9 5:00:48 > top of Java-index,Desktop,Core GUI APIs...