Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 25

Discussione: Jtable funzione update

  1. #11
    Ciao graze..ma non funzia ti mando esempio..


    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;

    import net.proteanit.sql.DbUtils;

    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.JScrollPane;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;

    public class provaTabella extends JFrame {

    private JPanel contentPane;
    private JTable tabellina;


    private Connection connection;
    private PreparedStatement pst;
    private ResultSet rs;
    private JButton btnNewButton;



    /**
    * Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    provaTabella frame = new provaTabella();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }

    public void refreshTable() {
    connection = sqliteConnection.dbConnector();

    try {

    String query = "select * from Prodotti"; // la selezione di quello che voglio visualizzare del Database

    pst = connection.prepareStatement(query);
    ResultSet rs = pst.executeQuery();
    tabellina.setModel(DbUtils.resultSetToTableModel(r s));


    pst.close();
    rs.close();


    } catch (Exception e) {
    e.printStackTrace();
    }

    }








    /**
    * Create the frame.
    */
    public provaTabella() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 750, 639);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(73, 68, 452, 186);
    contentPane.add(scrollPane);

    tabellina = new JTable();
    ((TableModel) tabellina).addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {
    if (e.getType() == TableModelEvent.UPDATE) {
    if (e.getFirstRow() == e.getLastRow() && e.getColumn() >= 0) {
    int riga = e.getFirstRow();
    int colonna = e.getColumn();

    System.out.println(riga+" "+colonna);
    }
    }
    }
    });





    scrollPane.setViewportView(tabellina);

    btnNewButton = new JButton("refresh1");
    btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

    refreshTable();

    }
    });
    btnNewButton.setBounds(496, 566, 89, 23);
    contentPane.add(btnNewButton);
    }



    }

  2. #12
    fatto anche cosi' ..si avvia importa i dati dal database ma cambio valore a qualche cella sulla tabella col doppio click niente nessun risultato..

    tabellina = new JTable();
    DefaultTableModel model = (DefaultTableModel) tabellina.getModel();
    model.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {
    System.out.println("aaaaaaa");
    if (e.getType() == TableModelEvent.UPDATE) {
    if (e.getFirstRow() == e.getLastRow() && e.getColumn() >= 0) {
    int riga = e.getFirstRow();
    int colonna = e.getColumn();

    System.out.println(riga+" "+colonna);
    }
    }
    }
    });

  3. #13
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    tabellina = new JTable();
    DefaultTableModel model = (DefaultTableModel) tabellina.getModel();
    Sei sicuro che questa variabile tabellina sia quella su cui si imposta il model dal DbUtils.resultSetToTableModel(rs) ??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #14
    il listatol'ho pubblicato.. sto provando ma non funziona.. non acchiappa la variazione
    se invece con il mouse clicco sulla tabella funziona.. acchiappa l'evento del mouse

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    il listatol'ho pubblicato.. sto provando ma non funziona.. non acchiappa la variazione
    se invece con il mouse clicco sulla tabella funziona.. acchiappa l'evento del mouse
    Innanzitutto

    tabellina = new JTable();
    ((TableModel) tabellina).addTableModelListener(new TableModelListener() {

    è sbagliato. tabellina è un JTable, non puoi fare un cast a TableModel.

    Ma a parte questo, il punto è: se fai tabellina.getModel().addTableModelListener( .... ) devi farlo DOPO che hai impostato il model con quel DbUtils !!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #16
    se non faccio il cast mi da errore eclipse.. come posso risolvere ?
    ora ho fatto delle prove..
    ora il PRG funziona solo per la seconda Jtable(tableProva) cioe' mi stampa la posizione della cella modificate e il suo valore..
    mentre per la Ttable Tabellina (quella costruita dal database ) nulla.. non mi stampa nulla e' come se non vesedde nessun cambiamento..

    mando listato..

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;

    import net.proteanit.sql.DbUtils;

    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.JScrollPane;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;

    public class provaTabella extends JFrame implements TableModelListener {

    private JPanel contentPane;
    private JTable tabellina;


    private Connection connection;
    private PreparedStatement pst;
    private ResultSet rs;
    private JButton btnNewButton;
    private JTable tableProva;
    private JButton btnNewButton_1;
    private JScrollPane scrollPane_1;
    DefaultTableModel model=null;
    DefaultTableModel model1=null;





    /**
    * Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    provaTabella frame = new provaTabella();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }

    public void refreshTable() {
    connection = sqliteConnection.dbConnector();


    try {

    String query = "select * from Prodotti"; // la selezione di quello che voglio visualizzare del Database

    pst = connection.prepareStatement(query);
    ResultSet rs = pst.executeQuery();
    tabellina.setModel(DbUtils.resultSetToTableModel(r s));


    model1 = (DefaultTableModel) tabellina.getModel();
    pst.close();
    rs.close();


    } catch (Exception e) {
    e.printStackTrace();
    }

    }


    public void tableChanged(TableModelEvent arg0) {
    System.out.println(arg0.getSource().toString());
    }

    public void popola2Tabella() {
    model = (DefaultTableModel) tableProva.getModel();


    model.addColumn("Col1");
    model.addColumn("Col2");

    model.addRow(new Object[]{"v1", "v2"});
    model.addRow(new Object[]{"v3", "v4"});
    model.addRow(new Object[]{"v5", "v6"});
    }



    /**
    * Create the frame.
    */
    public provaTabella() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 750, 639);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(73, 68, 452, 186);
    contentPane.add(scrollPane);

    tabellina = new JTable();
    model1 = (DefaultTableModel) tabellina.getModel();
    model1.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {


    if (e.getType() == TableModelEvent.UPDATE) {
    if (e.getFirstRow() == e.getLastRow() && e.getColumn() >= 0) {
    int riga = e.getFirstRow();
    int colonna = e.getColumn();
    System.out.println(colonna +" "+riga );
    System.out.println("valore "+model.getValueAt(riga, colonna));
    // ........
    }
    }
    }
    });


    scrollPane.setViewportView(tabellina);

    btnNewButton = new JButton("refresh1");
    btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

    refreshTable();

    }
    });
    btnNewButton.setBounds(496, 566, 89, 23);
    contentPane.add(btnNewButton);

    scrollPane_1 = new JScrollPane();
    scrollPane_1.setBounds(73, 317, 463, 156);
    contentPane.add(scrollPane_1);

    tableProva = new JTable();
    DefaultTableModel model = (DefaultTableModel) tableProva.getModel();
    model.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {


    if (e.getType() == TableModelEvent.UPDATE) {
    if (e.getFirstRow() == e.getLastRow() && e.getColumn() >= 0) {
    int riga = e.getFirstRow();
    int colonna = e.getColumn();
    System.out.println(colonna +" "+riga );
    System.out.println("valore "+model.getValueAt(riga, colonna));
    // ........
    }
    }
    }
    });


    scrollPane_1.setViewportView(tableProva);

    btnNewButton_1 = new JButton("refresh2");
    btnNewButton_1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    popola2Tabella();
    }
    });
    btnNewButton_1.setBounds(621, 566, 89, 23);
    contentPane.add(btnNewButton_1);
    }



    }

  7. #17
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    se non faccio il cast mi da errore eclipse.. come posso risolvere ?
    Questo cast è giusto:

    model1 = (DefaultTableModel) tabellina.getModel();

    perché model1 è di tipo DefaultTableModel, quindi il cast è necessario.

    Era invece sbagliato:

    ((TableModel) tabellina)

    perché un JTable NON lo puoi "convertire" in un TableModel !



    E continuo a ripetere che il addTableModelListener va fatto DOPO che hai impostato il model con quel DbUtils.resultSetToTableModel

    Se fai es.:

    tabellina = new JTable();
    model1 = (DefaultTableModel) tabellina.getModel();
    model1.addTableModelListener( ....... );

    In questo punto il JTable è appena creato, ha un DefaultTableModel predefinito (che NON è certo quello dal DbUtils) e su QUESTO table model ci registri il TableModelListener.

    Quando poi successivamente fai

    tabellina.setModel(DbUtils.resultSetToTableModel(r s));

    assegni un NUOVO table model alla JTable che non c'entra nulla con il precedente table model su cui avevi registrato il TableModelListener.

    Ma ti è chiaro?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #18
    Come cavolo faccio a risolvere il problema??
    creo una tabella nella quale importo 1 ad 1 i dati del database ?

  9. #19
    allora cosi' come ho fatto funziona..
    ma volevo chiedere (visto che proprio non ci riesco) l'aggiunta dell ascoltatore di eventi
    dtm.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) { .......etc etc
    perche' non riesco a metterlo nella riga successiva
    tabellina = new JTable()
    dove vado a creare il pane ( public provaTabella() )
    dove di solito metto tutti i Listener

    --Comunque grazie per la pazienza

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;

    import net.proteanit.sql.DbUtils;

    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.JScrollPane;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;

    public class provaTabella extends JFrame implements TableModelListener {

    private JPanel contentPane;
    private JTable tabellina;


    private Connection connection;
    private PreparedStatement pst;
    private ResultSet rs;
    private JButton btnNewButton;
    DefaultTableModel model=null;
    DefaultTableModel model1=null;
    DefaultTableModel dtm=null;





    /**
    * Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    provaTabella frame = new provaTabella();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }

    public void refreshTable() {
    connection = sqliteConnection.dbConnector();


    try {

    String query = "select * from Prodotti"; // la selezione di quello che voglio visualizzare del Database

    pst = connection.prepareStatement(query);
    ResultSet rs = pst.executeQuery();
    tabellina.setModel(DbUtils.resultSetToTableModel(r s));


    // model1 = (DefaultTableModel) tabellina.getModel();
    DefaultTableModel dtm = (DefaultTableModel) tabellina.getModel();
    dtm.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {

    if (e.getType() == TableModelEvent.UPDATE) {
    if (e.getFirstRow() == e.getLastRow() && e.getColumn() >= 0) {
    int riga = e.getFirstRow();
    int colonna = e.getColumn();
    System.out.println(colonna +" "+riga );
    System.out.println("valore "+dtm.getValueAt(riga, colonna));
    // ........
    }
    }
    }
    });


    pst.close();
    rs.close();


    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    /**
    * Create the frame.
    */
    public provaTabella() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 750, 639);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(73, 68, 452, 186);
    contentPane.add(scrollPane);

    tabellina = new JTable();

    scrollPane.setViewportView(tabellina);

    btnNewButton = new JButton("refresh1");
    btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

    refreshTable();

    }
    });
    btnNewButton.setBounds(496, 566, 89, 23);
    contentPane.add(btnNewButton);

    }

    }

  10. #20
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    tabellina.setModel(DbUtils.resultSetToTableModel(rs));
    tabellina.getModel().addTableModelListener(
    ....... );

    O se si preferisce (ed anzi, è meglio dato che il model lo dovrai poi certamente usare per prendere dati):

    tabellinaModel = (DefaultTableModel) DbUtils.resultSetToTableModel(rs);
    tabellinaModel.addTableModelListener(
    ....... );
    tabellina.setModel(tabellinaModel);



    (tabellinaModel una variabile da qualche parte, es. "di istanza").
    Ultima modifica di andbin; 03-06-2018 a 10:43
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.