jtable에서 객체 배열 목록의 내용을 표시하는 가장 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/623690

  •  05-07-2019
  •  | 
  •  

문제

트랙 객체의 배열 목록이 있습니다. 각 트랙 객체에는 다음 필드 (모든 문자열)가 있습니다.

URL, 제목, 제작자, 앨범, 장르, 작곡가

이 트랙을 JTABLE에 표시하고, 각 행은 트랙 객체의 인스턴스이며 각 열은 트랙 객체의 속성 중 하나를 포함합니다.

jtable을 사용 하여이 데이터를 어떻게 표시 할 수 있습니까? getValueat () 메소드를 올바르게 구현하는 AbstractTableModel을 사용했습니다. 그래도 화면에 아무것도 보이지 않습니다.

아니면 배열을 사용하는 것이 더 쉬운가요?

도움이 되었습니까?

해결책

a에 표시 할 내용을 추가하기 위해 JTable, 하나는 TableModel 디스플레이에 항목을 추가합니다.

데이터 행을 DefaultTableModel 사용하는 것입니다 addRow 배열을 취하는 메소드 Object행의 객체를 나타내는 s. 내용을 직접 추가하는 방법이 없기 때문에 ArrayList, 배열을 만들 수 있습니다 Objects의 내용에 액세스함으로써 s ArrayList.

다음 예제는 a를 사용합니다 KeyValuePair 데이터 홀더 인 클래스 (귀하와 유사 Track 클래스), 이는 채우는 데 사용됩니다. DefaultTableModel 테이블을 a로 표시합니다 JTable:

class KeyValuePair
{
    public String key;
    public String value;

    public KeyValuePair(String k, String v)
    {
        key = k;
        value = v;
    }
}

// ArrayList containing the data to display in the table.
ArrayList<KeyValuePair> list = new ArrayList<KeyValuePair>();
list.add(new KeyValuePair("Foo1", "Bar1"));
list.add(new KeyValuePair("Foo2", "Bar2"));
list.add(new KeyValuePair("Foo3", "Bar3"));

// Instantiate JTable and DefaultTableModel, and set it as the
// TableModel for the JTable.
JTable table = new JTable();
DefaultTableModel model = new DefaultTableModel();
table.setModel(model);
model.setColumnIdentifiers(new String[] {"Key", "Value"});

// Populate the JTable (TableModel) with data from ArrayList
for (KeyValuePair p : list)
{
    model.addRow(new String[] {p.key, p.value});
}

다른 팁

그런 다음 내가 가진 문제는 문제를 전혀 볼 수 없다는 것입니다. 인터페이스를 만드는 데 사용한 코드는 다음과 같습니다.

public Interface(){

    setSize(1024, 768);
    setBackground(new Color(0,0,0));
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    add(new MenuBar());//simple JMenuBar implementation

    table= new JTable();
    table.setPreferredScrollableViewportSize(new Dimension(500, 500));

    JScrollPane jsp = new JScrollPane(table);
    add(jsp);

    pack();
    setVisible(true);
}

이 코드가 실행되면 다른 클래스에 여러 번 수행하는 코드가 있습니다.

((DefaultTableModel)mainInterface.table.getModel()).addRow(
new String[] {t.location,t.title,t.creator,t.album,t.genre,t.composer});

그건 그렇고 T는 트랙 객체입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top