저는 독자적인 JMS 브라우저를 작성 중이며 JMS 서버의 메시지에 대한 JTable 업데이트를 받았습니다. LinkedList에 데이터를 추가 할 때 아래 logis가 작동하지만 실시간으로 업데이트되지 않는다는 것은 QueueBrowser에서 LinkedList로 추가 될 때 Jtable에 추가 된 모든 행을 즉시 표시하고 싶다는 것을 의미합니다.JMS 대기열에서 JTable으로 업데이트 [변경 후 예외가 발생했습니다]AbstractTableModel
TableModelListener
으로 Jtable을 새로 고쳤습니다.
다음 제안 사항에 따라 코드를 업데이트했습니다.
내가 잘못 했나요? 누구든지 나를 도울 수 있습니까?
QueueBrowser qb = session.createBrowser(q);
MsgTable mt = (MsgTable) queueTable.getModel();
mt.load(qb.getEnumeration(),mt);
qb.close();
class MsgTable extends AbstractTableModel implements TableModelListener{
final String[] columnNames = { "#", "Timestamp", "Type", "Mode",
"Priority" };
public void setRowSize(){
}
LinkedList queueList = new LinkedList();
public int getRowCount() { if (queueList == null) { return 0; } else { return queueList.size();}}
public int getColumnCount() { return columnNames.length;}
public String getColumnName(int column) {return columnNames[column];}
public Object getValueAt(int row, int column) {
if(queueList == null){
return null;
}
Message m = (Message) queueList.get(row);
...
}
void load(Enumeration e,MsgTable mt) {
mt.addTableModelListener(this);
while(e.hasMoreElements()){
queueList.add(e.nextElement());
}
fireTableDataChanged();
}
Message getMessageAtRow(int row) {
if (queueList == null)
return null;
return ((Message) queueList.get(row));
}
@Override
public void tableChanged(TableModelEvent arg0) {
// TODO Auto-generated method stub
fireTableDataChanged();
}
}
이 예외가 발생합니다.
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at javax.swing.table.AbstractTableModel.fireTableRowsInserted(Unknown Source)
잘못 되었나요?
이 코드는 이론적으로 좋아 보인다. 당신의 실제 문제는 무엇입니까? – jarnbjo
@jambjo, 잘 작동하지만 Jtable은 목록이 모든 데이터를 가져오고 LinkiedList에 추가 된 링크가 – ukanth