JTable
데이터를 새로 고치는 데 어려움을 겪고 있습니다.JTable 새로 고침 문제
나는 java.util.ArrayList<>
를 수신하고 테이블 데이터를 읽을 곳에서 Object[][]
를 구축하기이를 처리하는 방법으로, javax.swing.table.AbstractTableModel
에서 확장 TableModel
내 자신을 구현하고있다.
좀 레코드 키와 함께하는 JList를 구현하고 있습니다를, 사용자가 하나를 선택하면, 방법은 열쇠를 집어 들고 그 해고와 관련된 기록을 가져 오기 위해 MySQL 데이터베이스를 조회한다 :
논리는 다음과 같습니다 그 열쇠. 최종 결과는 ArrayList <>이며 TableModel에 전달하여 데이터를 생성 한 다음이를 내 테이블에 설정합니다.
정상적으로 작동하지만 몇 안타가 지나면 테이블 데이터 표시가 중지되고 잠시 후 다시 작동하기 시작합니다. 테이블 또는 전체 GUI를 새로 고치는 데 문제가 있는지 잘 모르겠습니다. 빌드
방법 테이블의 데이터가 :
LoteTableModel ltm = new LoteTableModel();
arrayList = new ArrayList<Lote>();
ltm.createTableData(arrayList);
myTable = new JTable();
myTable.setModel(ltm);
scrollPane = new JScrollPane(myTable);
: GUI를 시작할 때
public void createTableData(java.util.ArrayList<Lote> alLote) {
//Lote is an entity class modeling the database table.
TABLE_DATA = new Object[alLote.size()][TABLE_COLUMNS.length];
//TABLE_DATA is an Object array, TABLE_COLUMNS is a String[] containing the names of the columns.
int i = 0;
for (Lote element : alLote) {
int j = 0;
TABLE_DATA[i][j++] = element.getFirstColumnValue();
//and so son
i++;
}
super.fireTableDataChanged();
}
, 그것은 빈 ArrayList를 <>로 시작
이
코드의 발췌 한 것입니다테이블이 레코드가 없을 때 숨기고 결과가있는 경우를 보여주는 RowGroup과 테이블 컨테이너로 JScrollPane을 사용하고 있습니다.
다음dgl = new DesignGridLayout(panel);
dgl.row().center().group(group).add(scrollPaneContainingTable).fill();
centerPanel.add(panel, BorderLayout.CENTER);
getContentPane().add(centerPanel);
centerPanel.setVisible(true);
은 매번 사용자가하는 JList에서 항목을 선택하고, 나는 데이터베이스를 조회하고 선택된 값에 관련된 기록을 가져 오기 : 내가 전에 언급 한 바와 같이
public void listSelectionChanged() {
bloque = alBloque.get(listBloque.getSelectedIndex());
//bloque is another entity, alBloque is an ArrayList<Bloque> from which the JList (named listBloque) ListModel is constructed.
try {
//database query here, omitted
if (result.getStatus() == SUCCESS) {
//the query returned a populated ArrayList<Lote>
alLote = result.getArray();
((LoteTableModel) myTable.getModel()).createTableData(alLote);
myTable.revalidate();
}
} catch (Exception e) {}
}
, 그것은 좋은 몇 일 목록에서 값을 클릭하면 관련 레코드가 테이블에 표시되지만 여러 레코드를 클릭하면 데이터 표시가 중단됩니다. 약간의 값을 다시 클릭하면 올바른 데이터가 다시 표시되므로 이전에 말했듯이 GUI가 상쾌한 문제인지 더 잘 모르겠습니다.
도움이 될 것입니다.
예외를 삼키지 마십시오. – trashgod
실제로 질문을 할 때 단축 목적이었습니다. 나는'java.io.IOException'과'ClassNotFoundException'에 대한 다중 패치를합니다. – Noe
콘텐츠 창을 그리십시오. 그건 GUI를 새로 고칩니다. –