Heim > Java > javaLernprogramm > Warum zeigt meine JTable trotz korrekter Daten in meinem Datenmodell doppelte Zeilen an?

Warum zeigt meine JTable trotz korrekter Daten in meinem Datenmodell doppelte Zeilen an?

DDD
Freigeben: 2025-01-05 15:05:46
Original
579 Leute haben es durchsucht

Why Does My JTable Show Duplicate Rows Despite Correct Data in My Data Model?

JTable mit doppelten Werten füllen

Obwohl ein korrektes Datenmodell mit geeigneten Daten vorhanden ist, kann das Auffüllen einer JTable dazu führen, dass jede Zeile doppelte Werte enthält, was Bedenken hinsichtlich der Daten aufwirft Integrität.

Inspektion des Datenmodells

Zunächst fällt der Verdacht auf das benutzerdefinierte Datenmodell, CollectionDataModel. Die Methode populate() scheint sich wie beabsichtigt zu verhalten, indem sie vorhandene Daten löscht und sie mit den Elementen in der Sammlung füllt, die jeweils in einer ArrayList gespeichert sind. Reihe. Eine genauere Betrachtung zeigt jedoch, dass das Datenmodell tatsächlich die richtigen Daten enthält, was darauf hindeutet, dass das Problem woanders liegt.

Überlegungen zur JTable-Auffüllung

Um eine JTable ordnungsgemäß zu füllen, sollten die folgenden Überlegungen beachtet werden Beachten Sie:

  • getValueAt(rowIndex, ColumnIndex) sollte den korrekten Wert für den angegebenen Wert zurückgeben Zelle.
  • getColumnCount() und getRowCount() sollten die Größe der Daten genau widerspiegeln.
  • Das Datenmodell sollte die Aktualisierungen widerspiegeln, die über die Methode populate() vorgenommen werden.

Untersuchung der JTable-Implementierung

Das Problem der JTable-Auffüllung kann auftreten, wenn das Datenmodell oder die JTable-Implementierung falsch ist aktualisiert. Die JTable nutzt die Methoden des Datenmodells möglicherweise nicht korrekt, was zu einer falschen Auffüllung führt.

Beheben des Problems

Um das Problem zu beheben, überprüfen Sie sorgfältig die CollectionDataModel-Implementierung, um sicherzustellen, dass sie dem Vertrag entspricht. Überprüfen Sie außerdem die JTable-Implementierung, um sicherzustellen, dass sie die Methoden des Datenmodells korrekt verwendet, um ihre Zeilen und Spalten zu füllen.

Beispiel für eine ordnungsgemäße JTable-Auffüllung

Betrachten Sie das folgende Beispiel, das die ordnungsgemäße JTable-Auffüllung zeigt :

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class EnvTableTest extends JPanel {

    public EnvTableTest() {
        this.setLayout(new GridLayout());
        this.add(new JScrollPane(new JTable(new EnvDataModel())));
    }

    private static class EnvDataModel extends AbstractTableModel {

        private Map<String, String> data = System.getenv();
        private String[] keys;

        public EnvDataModel() {
            keys = data.keySet().toArray(new String[data.size()]);
        }

        @Override
        public String getColumnName(int col) {
            if (col == 0) {
                return "Key";
            } else {
                return "Value";
            }
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public int getRowCount() {
            return data.size();
        }

        @Override
        public Object getValueAt(int row, int col) {
            if (col == 0) {
                return keys[row];
            } else {
                return data.get(keys[row]);
            }
        }
    }

    private void display() {
        JFrame f = new JFrame("EnvTableTest");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new EnvTableTest().display();
            }
        });
    }
}
Nach dem Login kopieren

In diesem Beispiel ruft das benutzerdefinierte Datenmodell EnvDataModel korrekt Daten aus den Umgebungsvariablen ab und stellt sie bereit zur JTable, was zu einer ordnungsgemäß gefüllten Tabelle führt.

Das obige ist der detaillierte Inhalt vonWarum zeigt meine JTable trotz korrekter Daten in meinem Datenmodell doppelte Zeilen an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage