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

Discussione: Jtable funzione update

Hybrid View

  1. #1
    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. #2
    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. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    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. #5
    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);
    }



    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    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);

    }

    }

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    grazie mille per la pazienza..
    ma qua
    tabellinaModel.addTableModelListener(
    ....... );
    al posto dei puntini cosa scrivo chemi da sempre errore..
    Ultima modifica di antonello2; 03-06-2018 a 16:15 Motivo: aggiunta

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    tabellinaModel.addTableModelListener([/FONT] ....... );
    al posto dei puntini cosa scrivo chemi da sempre errore..
    Devi passare un qualunque oggetto che implementa TableModelListener. Potrebbe essere implementato con una "anonymous" inner-class (ho fatto l'esempio nel post #10), oppure potrebbe essere una variabile TableModelListener a cui hai assegnato un oggetto che implementa TableModelListener, oppure ancora potrebbe essere il this se la tua classe principale implementa TableModelListener. O ancora altre varianti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2026 vBulletin Solutions, Inc. All rights reserved.