Salve a tutti,
è poco meno di un mese che ho cominciato lo studio di Java e sto mettendo le mani per la prima volta al codice vero e proprio, ho un'idea da implementare ma mi trovo con la necessità di fare un refresh dopo un inserimento (o modifica) di un record nel DB Derby ma non ci riesco.
Ho letto diverse soluzioni online ma evidentemente le metto in pratica male.
Aggiungo che avevo cominciato (sbagliando) utilizzando l'IDE di NetBeans 7.1 per la creazione della GUI poi ho ricominciato da zero ed ho preferito imparare scrivendomi il codice a mano.
Sotto vi riporto gli stralci di codice che già ho scritto se mi aviutate per il refresh della tablemma dopo la pressione di un bottone ve ne sarei grato!!
Test (classe principale):
codice:
package videom;
import java.sql.SQLException;
public class VideoM {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
GUI frame = new GUI();
frame.Crea();
}
}
GUI
codice:
package test;
import java.awt.Container;
import java.awt.GridLayout;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public class GUI extends JFrame {
public JTextField JTextFieldAggiungi;
public static JPanel panel2;
public void Crea() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
Container c = getContentPane();
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
[...]
panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
instance = new Elenco();
panel2.add(instance.Elenco());
// Area di testo per inserire il punteggio
JTextFieldAggiungi = new JTextField(20);
JTextFieldAggiungi.setEditable(true);
panel3.add(JTextFieldAggiungi);
// Bottone inserimento punteggio
JButton buttonAggiungi = new JButton("Aggiungi");
buttonAggiungi.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
try {
buttonAggiungiMouseClicked(evt);
} catch (ClassNotFoundException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
panel3.add(buttonAggiungi);
[...]
private void buttonAggiungiMouseClicked(java.awt.event.MouseEvent evt) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
Inserisci.insert(JTextFieldAggiungi.getText());
}
Elenco (file con l'SQL)
codice:
class Elenco extends JFrame{
public static TableModel tableModel;
public static JTable table;
private JScrollPane scrollPane;
public JScrollPane Elenco() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
ArrayList<Punti> listaPunti = new ArrayList<Punti>();
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/punti;user=andrea;password=andrea");
final java.sql.Statement stmt = conn.createStatement();
ResultSet results = stmt.executeQuery("SELECT * FROM punti");
while(results.next())
{
int a = results.getInt(1);
int b = results.getInt(2);
String c = results.getString(3);
String e = "1";
boolean d;
if (c.equals(e)) {
d = true;
} else {
d = false;
}
listaPunti.add(new Punti(a, b, d));
}
tableModel = new TableModel(listaPunti);
table = new JTable(tableModel);
scrollPane = new JScrollPane(table);
return scrollPane;
}
}
Table Model e Inserisci posso anche evitare di postarli tanto non è utile al fine ultimo credo, nel caso ditemelo che li aggiungo di seguito.
Spero possiate aiutarmi in qualche maniera.
Grazie
Andrea