Jtable nicht aktualisieren/Daten aktualisieren

Ich habe ein problem mit JTable/JScrollPane. Meine Daten-Tabelle nicht aktualisieren/Aktualisierung. Ich bin mit DefultTableModel und nach dem code alles in Ordnung und ich habe keine Fehler. Auch ich habe eine Tabelle mit paging und das ist, warum ich bin mit action-Listener und buttons "prev" und "next". Ich bin die von anderen auf Funktion codiert ist, die in der Klasse, wo ist JTable. Problem ist, dass ich füllen von arrays enthält die Daten für die Tabelle, aber die Tabelle nicht aktualisieren/aktualisieren. Hier ist mein code. Danke im Voraus.

GROß BEARBEITEN Alt-code wurde entfernt. Ich fügte hinzu, neue codes, die Ihnen helfen, Jungs/Mädchen zu verstehen, problem, das ich habe. Hoffe, dass dies helfen wird. Grüße.

Erste hier ist Klasse, die zeigen, 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);
        }
    });
}

}

Zweite hier ist Klasse, die übergeben Strings auf die gui-Klasse, die die jtable enthält

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

    }
  }
}

Nächste hier ist die Erklärung des gui (contructor):

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);
}

Hier ist 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) Bitte lernen Sie java Namenskonventionen halten. b) Never-ever rufen Sie die fireXX Methoden außerhalb des Modells (das Modell muss behandeln, die selbst) c) nie-jemals-Aufruf repaint (wird nicht benötigt)

InformationsquelleAutor ZhiZha | 2012-09-28

Schreibe einen Kommentar