Gewusst wie: aktualisieren Sie JTable nach dem einfügen von Daten in die Datenbank?
Bin ich Auffüllen JTable aus access-Datenbank. wenn der code ausgeführt wird, für die erste Zeit, Tisch lädt perfekt. Fügt dann neue Datensätze in die Datenbank von JDialog. Was ich versuche zu tun, ist zu nennen loadData()
- Methode bei der JDialog geschlossen wird, aber die Tabelle wird nicht aktualisiert.
Dies ist mein loadData()
Methode:
private void loadData() {
System.out.println("sssss");
final String [] columnNames={"Seq", "First Name", "Last Name","Num1","Num2","Num3"};
connectDb();
data = new Object[rows][columns];
int row = 0;
try {
while(rs.next()){
for(int col = 0 ; col<columns; col++ ){
if(col==0)
data[row][col]=rs.getString("contact_seq");
if(col==1)
data[row][col]=rs.getString("contact_fname");
if(col==2)
data[row][col]=rs.getString("contact_lname");
if(col==3)
data[row][col]=rs.getString("contact_num1");
if(col==4)
data[row][col]=rs.getString("contact_num2");
if(col==5)
data[row][col]=rs.getString("contact_num3");
}
row++;
}
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
model = new DefaultTableModel(data, columnNames){
/**
*
*/
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int column)
{
return false;
}
};
table = new JTable(model);
}`
diese, wie ich call loadData-Methode, die beim schließen der JDialog.
JMenuItem mntmNew = new JMenuItem("New Contact");
mntmNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addData gui = new addData(viewData.this,rs);
gui.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
gui.setVisible(true);
gui.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e){
loadData();
}
});
}
});
mnFile.add(mntmNew);
Meine Datenbank aktualisiert wird, wenn das hinzufügen der Datensätze, sondern Jtable wird nicht aktualisiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier:
Nicht die Tabelle neu erstellen, aber aktualisieren Ihr Modell statt, entweder durch die Festlegung einer neuen Tabelle, Modell oder durch das löschen und neu-Befüllen der aktuellen:
Siehe Beispiele hier (enthält SwingWorker, um Datenbank-Aufrufe in einem hintergrund-thread), hier und hier. Bitte haben Sie einen Blick auf diese Fragen gibt es Erklärungen, um den Punkt klar.
table = new JTable(model)
an den Konstruktor-Methode, und dann innerhalb der Konstruktor-Methode, genannt dieloadData()
Methode. Und mein Tisch braucht einige Zeit zum laden. So, jetzt werde ich dasselbe tun Veränderungen als Ihre Beispiele.Dies ist ein Schuss im Dunkeln, aber vielleicht wird dies funktionieren?:
Wenn ich verstehe, was Los ist, die zugrunde liegende Datenbank wird immer aktualisiert, aber das JTable-Komponente zeigt nicht die updates. Meine Vermutung ist, dass Sie nur noch zu nennen die
repaint()
- Methode so, dass die JTable bekommt auch aktualisiert.repaint()
Methode.Dieser arbeitete für mich:
Ich entfernt alle Zeilen aus der
JTable
und wieder genanntsetTableValue
Methode, um re-füllen der Tabelle.