Jtable n'a pas d'actualisation/mise à jour des données

J'ai un problème avec JTable/JScrollPane. Mon tableau de données n'est pas rafraîchissant/mise à jour. Je suis à l'aide de DefultTableModel et selon le code, tout est parfait et je n'ai pas toutes les erreurs. Aussi, j'ai un tableau avec la pagination et c'est pourquoi je suis à l'aide de l'action des auditeurs et des boutons "précédent" et "suivant". Je suis de passage à partir d'une autre fonction à la fonction qui est codé dans la classe où est JTable. Le problème est que je remplis les tableaux qui contient des données pour la table, mais la table ne sera pas mise à jour/l'actualiser. Voici mon code. Merci d'avance.

BIG MODIFIER Ancien code a été supprimé. J'ai ajouté de nouveaux codes qui vont vous aider les gars et les filles à comprendre le problème que j'ai. Espérons que cela va aider. Ce qui concerne.

Premier ici est de classe qui montrent gui:

import javax.swing.*;
public class Glavni {
public static void main(String[] args)  {
    //TODO Auto-generated method stub
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
                gui Scanner = new gui();
                Scanner.setVisible(true);
        }
    });
}

}

Deuxième ici est de classe qui passent de la Chaîne graphique de la classe qui contient jtable

public class passDatatoTable {
public void passData(){
    String str1,str2,str3,str4;
    gui SendStringsToGUI = new gui();
    for (int i =0;i<=10;i++){
            str1="Column 1 of row: "+i;
            str2="Column 2 of row: "+i;
            str3="Column 3 of row: "+i;
            str4="Column 4 of row: "+i;
            SendStringsToGUI.WriteMonitorData(str1, str2, str3, str4);

    }
  }
}

Prochaine voici la déclaration de l'interface graphique (constructeur):

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class gui extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
String[][] data = new String[100][4];
String[] columnNames = new String[]{
"IP", "PC_NAME", "ttl", "db"
};
DefaultTableModel model = new DefaultTableModel(data,columnNames);
JTable table =  new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
int i=0;
public void WriteMonitorData (String IP, String PC_NAME, String ttl, String gw)
{
System.out.println(IP);//just for testing (check if data was passed)
model.setValueAt(IP, i, 0);
model.setValueAt(PC_NAME, i, 1);
model.setValueAt(ttl, i, 2);
model.setValueAt(gw, i, 3);
i++;
model.fireTableDataChanged();
table.repaint();
scrollPane.repaint();
}   
gui(){
JButton addData= new JButton("Add Data");
JButton next = new JButton("next");
JButton prev = new JButton("prev");
addData.addActionListener(this);
next.addActionListener(this);
prev.addActionListener(this);
JPanel panel = new JPanel(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.add(addData);
buttonPanel.add(prev);
buttonPanel.add(next);
panel.add(buttonPanel, BorderLayout.SOUTH);
panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
panel.add(scrollPane, BorderLayout.CENTER);
getContentPane().add(panel);
}

Ici est actionListeners:

public void actionPerformed(ActionEvent e) {
if ("Add Data".equals(e.getActionCommand())){
passDatatoTable passSomeData = new passDatatoTable();
passSomeData.passData();
}
if ("next".equals(e.getActionCommand())) {
Rectangle rect = scrollPane.getVisibleRect();
JScrollBar  bar = scrollPane.getVerticalScrollBar();
int blockIncr = scrollPane.getViewport().getViewRect().height;
bar.setValue(bar.getValue() + blockIncr);
scrollPane.scrollRectToVisible(rect);
}
if ("prev".equals(e.getActionCommand())) {
Rectangle rect = scrollPane.getVisibleRect();
JScrollBar  bar = scrollPane.getVerticalScrollBar();
int blockIncr = scrollPane.getViewport().getViewRect().height;
bar.setValue(bar.getValue() - blockIncr);
scrollPane.scrollRectToVisible(rect);
}
}
a) s'il vous Plaît apprendre conventions de nommage java et de s'y tenir. b) ne Jamais-jamais d'appeler des fireXX méthodes en dehors du modèle (le modèle poignée qui lui-même) c), jamais appeler repaint (qui ne sont pas nécessaires)

OriginalL'auteur ZhiZha | 2012-09-28