>Java >java지도 시간 >내 데이터 모델의 데이터가 정확함에도 불구하고 내 JTable에 중복 행이 표시되는 이유는 무엇입니까?

내 데이터 모델의 데이터가 정확함에도 불구하고 내 JTable에 중복 행이 표시되는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-05 15:05:46544검색

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

중복 값으로 JTable 채우기

적절한 데이터로 올바른 데이터 모델이 있음에도 불구하고 JTable을 채우면 각 행에 중복 값이 ​​포함되어 데이터에 대한 우려가 높아질 수 있습니다. 무결성.

데이터 모델 검사

처음에는 의심이 떨어집니다. 사용자 정의 데이터 모델인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.