bir tablo ve karşılık gelen model, herhangi bir karşılık gelen bir TableRowSorter ilave edildikten sonra firetabletablerowsinserted neden istisna spesifik olarak ekler. Testten GetRowCount() 'ın model aralığını geçtiği bir değer döndürdüğü açıktır. Ancak, bir sıralayıcı veya filtre eklendikten sonra tabloya değer eklemeye devam etmem benim için anlamlı değil mi?: geçersiz aralık
Örnek olarak, o zaman benim modelinde aşağıdaki çağrıları ile tabloya bir değer katmak tabloya şey eklemeden önce satır filtre ayarlayın:
this.addRow(row, createRow(trans,row));
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Rowcount büyüklüğü 1 ve istisna olduğu atılır: ilk sıralayıcı her şeyi eklemeden aynı adımları yaparsanız
java.lang.IndexOutOfBoundsException: Invalid range
at javax.swing.DefaultRowSorter.checkAgainstModel(Unknown Source)
at javax.swing.DefaultRowSorter.rowsInserted(Unknown Source)
at com.gui.model
gayet iyi. Ben muhtemelen sıralayıcı değişiklikler yapmış ve çalışmış olabileceğini modeli bildirmek için gerekli olduğu kabul Aşağıdaki ama hala bir istisna verir:
this.addRow(row, createRow(trans,row));
this.fireTableStructureChanged()
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Hatta bir değer eklenmiştir modelin içindeki ayırıcı bildirmek için çalıştı aşağıdaki gibi ateş çağırmadan önce modele ama buna da başarısız:
this.addRow(row, createRow(trans,row));
if(sorter.getRowFilter() != null){
//if a sorter exists we are in add notify sorter
sorter.rowsInserted(getRowCount(), getRowCount());
}
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Son olarak, sert FireTableRowsInsterted (0,0) kodlu ve herhangi istisna değil. Ama hiçbir şey masaya eklenmez mi? Yani, kesinlikle bir tür OutOfBounds sorun olduğunu biliyorum. Her yere baktım ve cevap bulmak için görünmüyor olabilir. Bunun nasıl çalıştığını düşünen herhangi bir fikri varsa, çok yardımcı olabilir. Eğer Modelinizdeki gibi kontrol görünüyor eğer şimdilik
public void update(Observable o, Object evt) {
if (evt instanceof ObservableEvent<?>) {
ObservableEvent<?> event = (ObservableEvent<?>) evt;
if (event.getElement() instanceof HttpTransaction) {
HttpTransaction trans = (HttpTransaction) event.getElement();
// handle adding of an element
if (event.getAction() == PUT) {
if (includeTransaction(trans)) {
// handle request elements
if (trans.getRequest() != null && idMap.get(trans.getID()) == null) {
idMap.put(trans.getID(), count++);
// transactionManager.save(trans);
int row = idMap.get(trans.getID());
this.addRow(row, createRow(trans,row));
if(sorter.getRowFilter() != null){
sorter.rowsInserted(getRowCount(), getRowCount());
}
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
}
'this.fireTableRowsInserted (this.getRowCount(), this.getRowCount());' - basitçe yanlış – Whired
var kapalı - @Paul 'un yorumuna kendi cevabına bakın: sizinkiyle aynı hata. BTW, asla modelin _outside_'ından bir model olayı ateşlemez. İlgili taraflara bildirmek için modelin özel sorumluluğu ... – kleopatra