ホームページ > Java > &#&チュートリアル > データ モデル内のデータが正しいにもかかわらず、JTable に重複行が表示されるのはなぜですか?

データ モデル内のデータが正しいにもかかわらず、JTable に重複行が表示されるのはなぜですか?

DDD
リリース: 2025-01-05 15:05:46
オリジナル
553 人が閲覧しました

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

JTable に重複値を設定する

適切なデータを含む正しいデータ モデルがあるにもかかわらず、JTable に設定すると各行に重複値が含まれる可能性があり、データに関する懸念が生じます。整合性。

データの検査Model

当初、疑惑はカスタム データ モデル CollectionDataModel に当てはまります。 Populate() メソッドは意図したとおりに動作しているようで、既存のデータをクリアし、コレクション内の項目を設定します。各項目は ArrayList に格納されています。行。ただし、詳しく調べると、データ モデルが確かに正しいデータを保持していることが明らかになり、問題が別の場所にあることを示唆しています。

JTable の作成に関する考慮事項

JTable に適切に作成するには、次の考慮事項に従う必要があります。念頭に置いてください:

  • getValueAt(rowIndex, columnIndex) は、指定された値に対して正しい値を返す必要があります。 cell.
  • getColumnCount() および getRowCount() はデータのサイズを正確に反映する必要があります。
  • データ モデルは、populate() メソッドを通じて行われた更新を反映する必要があります。

JTable 実装の調査

JTable の実装の問題は、次の場合に発生する可能性があります。データ モデルまたは JTable 実装が誤って更新されます。 JTable がデータ モデルのメソッドを正しく利用していないため、不正確なデータが取り込まれている可能性があります。

問題の解決

問題を解決するには、CollectionDataModel の実装を注意深く確認して、契約に準拠していることを確認してください。さらに、JTable 実装を検査して、データ モデルのメソッドを正しく使用して行と列を設定していることを確認します。

適切な JTable 作成の例

適切な JTable 作成を示す次の例を考えてみましょう。 :

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();
            }
        });
    }
}
ログイン後にコピー

この例では、EnvDataModel カスタム データ モデルは環境変数からデータを正しく取得します。それを JTable に提供すると、適切にデータが設定されたテーブルが生成されます。

以上がデータ モデル内のデータが正しいにもかかわらず、JTable に重複行が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート