AbstractTableModel Exception in thread "AWT-EventQueue-

Status
Nicht offen für weitere Antworten.

Lony

Neues Mitglied
Hallo,

ich habe Probleme beim löschen eines Elements aus meiner JTable durch ein Button.


Das ist die Aktion des Buttons.
Code:
AbstractAction actionDel = new AbstractAction("Del") {
			private static final long serialVersionUID = 1311557294745524560L;

			@Override
			public void actionPerformed(ActionEvent e) {
				if (DEBUG) begin(LOG, e);
				
	            int row = feedTable.getSelectedRow();
	            
	            if (DEBUG) LOG.debug("Feed in Zeile '" + row + "' gelöscht.");
	            
	            feedModel.deleteFeed(row);
//	            feedDataModel.setFeedDataList(new ArrayList<FeedData>());
	            				
				if (DEBUG) end(LOG, row);
			}
		};
		feedDelButton.setAction(actionDel);
		feedTable.getActionMap().put(KEY_STROKE_DELETE, actionDel);


Das Tabellen Modell - speziell deleteFeed() ist wichtig
Code:
package rssCrawler.controller;

import static util.LogUtil.beginTrace;
import static util.LogUtil.endTrace;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import rssCrawler.model.Feed;

public class FeedTableModel extends AbstractTableModel {

	private static final long serialVersionUID = -6736682383186152972L;
	private static final Log LOG = LogFactory.getLog(FeedTableModel.class);
	private static final boolean TRACE = LOG.isTraceEnabled();
	
	private static final String DATE_FORMAT = "dd.MM.yyyy HH:mm";
	private static final SimpleDateFormat dateFormater = new SimpleDateFormat(DATE_FORMAT);
	
	private List<Feed> feeds = new ArrayList<Feed>();
	
	public List<Feed> getFeeds() {
		return feeds;
	}

	public void setFeeds(List<Feed> feeds) {
		this.feeds = feeds;
		// Listeners benachrichtigen
		this.fireTableDataChanged();
	}

	public void addFeed(Feed feed) {
		
		if (TRACE) beginTrace(LOG, feed);

		int index = feeds.size();
		feeds.add(feed);

		// Listeners benachrichtigen
		this.fireTableRowsInserted(index, index);
		
		if (TRACE) endTrace(LOG);
	}
	
	public void deleteFeed(int rowIndex) {	
		
		if (TRACE) beginTrace(LOG, rowIndex);

		//keine Feeds mehr vorhanden		
		if (this.getRowCount() == 0)
			return;
		
		feeds.remove(rowIndex);

		// Listeners benachrichtigen
		this.fireTableRowsDeleted(rowIndex, rowIndex);
		
		if (TRACE) endTrace(LOG);
	}

	@Override
	public int getColumnCount() {
		return 3;
	}

	@Override
	public int getRowCount() {
		return feeds.size();
	}

	public String getColumnName(int column) {
		switch (column) {
		case 0:
			return "Titel";
		case 1:
			return "Last Updated";
		case 2:
			return "URL";
		default:
			return null;
		}
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		if (TRACE) beginTrace(LOG, rowIndex, columnIndex);
		
		Feed feed = (Feed) feeds.get(rowIndex);

		switch (columnIndex) {
		case 0:
			return feed.title;
		case 1:
			return dateFormater.format(feed.lastSynced);
		case 2:
			return feed.feedLocation;
		default:
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	public Class getColumnClass(int columnIndex) {
		if (TRACE) beginTrace(LOG, columnIndex);

		switch (columnIndex) {
		case 0:
			return String.class;
		case 1:
			return SimpleDateFormat.class;
		case 2:
			return String.class;
		default:
			return null;
		}
	}

	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return false;
	}

	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		
		if (TRACE) beginTrace(LOG, aValue, rowIndex, columnIndex);
		
		Feed feed = (Feed) feeds.get(rowIndex);
		
		//write only "Title" and "URL" column data
		switch (columnIndex) {
			case 0:
				feed.title = ((String) aValue).toString();
				
				// Listeners benachrichtigen
				this.fireTableCellUpdated(rowIndex, columnIndex);
				
				break;
			case 2:
				feed.feedLocation = ((String) aValue).toString();
				
				// Listeners benachrichtigen
				this.fireTableCellUpdated(rowIndex, columnIndex);
				
				break;
		}
		
		if (TRACE) endTrace(LOG);
	}
}

Die Verursachte Exception
Code:
TRACE controller.FeedTableModel - BEGIN getColumnClass: 0 
TRACE controller.FeedTableModel - BEGIN getValueAt: 0, 0 
TRACE controller.FeedTableModel - BEGIN getColumnClass: 0 
TRACE controller.FeedTableModel - BEGIN getValueAt: 0, 0 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.ArrayList.get(ArrayList.java:324)
	at rssCrawler.view.RSSCrawler$2.valueChanged(RSSCrawler.java:149)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
	at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:668)
	at javax.swing.JTable.restoreSortingSelection(JTable.java:4157)
DEBUG view.RSSCrawler - BEGIN actionPerformed: java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Del,
       when=1229168484812,modifiers=Button1] on javax.swing.JButton[,166,5,47x23,....] 
DEBUG view.RSSCrawler - Feed in Zeile '0' gelöscht.
TRACE controller.FeedTableModel - BEGIN deleteFeed: 0 
TRACE view.RSSCrawler - BEGIN valueChanged: javax.swing.event.ListSelectionEvent[
       source=javax.swing.DefaultListSelectionModel 21363001 ~{} firstIndex= 0 lastIndex= 0 isAdjusting= true ] 
TRACE view.RSSCrawler - END valueChanged: -1 
TRACE view.RSSCrawler - BEGIN valueChanged: javax.swing.event.ListSelectionEvent[
       source=javax.swing.DefaultListSelectionModel 21363001 ~{} firstIndex= -1 lastIndex= 0 isAdjusting= true ] 
TRACE view.RSSCrawler - END valueChanged: -1 
TRACE view.RSSCrawler - BEGIN valueChanged: javax.swing.event.ListSelectionEvent[
       source=javax.swing.DefaultListSelectionModel 21363001 ~{} firstIndex= -1 lastIndex= 0 isAdjusting= true ] 
TRACE view.RSSCrawler - END valueChanged: -1 
TRACE view.RSSCrawler - BEGIN valueChanged: javax.swing.event.ListSelectionEvent[
       source=javax.swing.DefaultListSelectionModel 21363001 ={} firstIndex= -1 lastIndex= 0 isAdjusting= false ] 

	at javax.swing.JTable.access$500(JTable.java:198)
	at javax.swing.JTable$SortManager.restoreSelection(JTable.java:3961)
	at javax.swing.JTable$SortManager.processChange(JTable.java:3935)
	at javax.swing.JTable.sortedTableChanged(JTable.java:4067)
	at javax.swing.JTable.tableChanged(JTable.java:4333)
	at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
	at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
	at rssCrawler.controller.FeedTableModel.deleteFeed(FeedTableModel.java:62)
	at rssCrawler.view.RSSCrawler$4.actionPerformed(RSSCrawler.java:251)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6041)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5806)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4413)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2440)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Ihrgendie tritt bei fireTableRowsDeleted in deleteFeed() diese Exception auf? Hat jemand eine Idee warum, die Row wird doch richtig gefunden?

Grüße Lony
 

André Uhres

Top Contributor
Versuch's mal so:
Code:
public void deleteFeed(int rowIndex) {
    if(rowIndex < 0)return;
    ...
 

André Uhres

Top Contributor
Funktioniert bei mir. Ich habe deinen Code kopiert, die gezeigte Änderung gemacht und noch folgende Zeile eingebaut:
Code:
feedTable.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), KEY_STROKE_DELETE);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi Swing AbstractTableModel AWT, Swing, JavaFX & SWT 9
N Swing Print JTable mit AbstractTableModel AWT, Swing, JavaFX & SWT 1
N JTable, AbstractTableModel aus Datenbank initialisieren AWT, Swing, JavaFX & SWT 8
I JTable,AbstractTableModel Problem AWT, Swing, JavaFX & SWT 3
I JTable und AbstractTableModel AWT, Swing, JavaFX & SWT 10
H JTable - DefaultTableModel vs AbstractTableModel AWT, Swing, JavaFX & SWT 5
O Swing AbstractTableModel - Observer.. AWT, Swing, JavaFX & SWT 14
K Swing jTable und AbstractTableModel AWT, Swing, JavaFX & SWT 6
Ollek Swing JTable - Zeile löschen mit AbstractTableModel AWT, Swing, JavaFX & SWT 20
B Swing AbstractTableModel rows verschieben AWT, Swing, JavaFX & SWT 2
M Swing JComboBox im AbstractTableModel AWT, Swing, JavaFX & SWT 8
H Markierte Zeile löschen AbstractTableModel AWT, Swing, JavaFX & SWT 10
K JTable & AbstractTableModel AWT, Swing, JavaFX & SWT 9
G Problem mit AbstractTableModel und JComboBox AWT, Swing, JavaFX & SWT 8
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
G AbstractTableModel kopieren AWT, Swing, JavaFX & SWT 4
G JTable (AbstractTableModel) wird nicht aktualisiert AWT, Swing, JavaFX & SWT 2
F AbstractTableModel + Vector - Wie Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
D JTable, DefaultTableCellRenderer & AbstractTableModel AWT, Swing, JavaFX & SWT 11
N JTable repaint mit AbstractTableModel AWT, Swing, JavaFX & SWT 2
B jTabel, MVC und AbstractTableModel AWT, Swing, JavaFX & SWT 6
M Wann AbstractTableModel und wann DefaultTableModel AWT, Swing, JavaFX & SWT 4
S AbstractTableModel AWT, Swing, JavaFX & SWT 16
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
Z JavaFX Exception in Application start method AWT, Swing, JavaFX & SWT 2
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
R AWT no such child Exception AWT, Swing, JavaFX & SWT 7
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
L Java FX Exception beim start AWT, Swing, JavaFX & SWT 2
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
VfL_Freak AWT Exception in der Eventqueue AWT, Swing, JavaFX & SWT 8
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
H JavaFX Ein View vorschalten Exception AWT, Swing, JavaFX & SWT 7
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
M 3D-Grafik Mac Java 3D in Eclipse Exception AWT, Swing, JavaFX & SWT 0
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
I Opencv Imgproc.floodfill exception AWT, Swing, JavaFX & SWT 1
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
T Gui Exception AWT, Swing, JavaFX & SWT 2
X Auf Fensterklasse zugreifen (Nullpointer Exception) AWT, Swing, JavaFX & SWT 2
M Threads - nicht erklärbare Exception AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
C Event Handling Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException AWT, Swing, JavaFX & SWT 43
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
N Swing Exception: Comparison method violates its general contract! AWT, Swing, JavaFX & SWT 13
S Exception bei BufferStrategy AWT, Swing, JavaFX & SWT 8
H Swing Exception's und MVC AWT, Swing, JavaFX & SWT 35
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
K AWT DataBuffer in DataBufferInt Exception AWT, Swing, JavaFX & SWT 2
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
S Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile AWT, Swing, JavaFX & SWT 3
O Immer Exception in AWT-EventQueue-0 AWT, Swing, JavaFX & SWT 5
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
F Swing Seltsame Exception AWT, Swing, JavaFX & SWT 5
R Swing Files auflisten (JButton, JList, Exception) AWT, Swing, JavaFX & SWT 4
V LookAndFeel Nullpoint Exception AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
N Exception Behandlung mit setDefaultUncaughtExceptionHandler, insbesondere im EventDispatcher Thread AWT, Swing, JavaFX & SWT 4
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
B JTable ValueChanged verursacht Exception AWT, Swing, JavaFX & SWT 3
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
Daniel_L JTable, (Auto-)RowSorter und NullPointer-Exception AWT, Swing, JavaFX & SWT 6
M Exception in eine JTextArea anzeigen AWT, Swing, JavaFX & SWT 7
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
G Kann mir jemand diese Exception erklaeren? AWT, Swing, JavaFX & SWT 8
T AWT Exception AWT, Swing, JavaFX & SWT 5
A Exception beim LineWrapping AWT, Swing, JavaFX & SWT 16
P Für mich unverständliche Exception AWT, Swing, JavaFX & SWT 3
N JList - Nullpointer Exception AWT, Swing, JavaFX & SWT 4
T Warum schmeißt das eine Exception? AWT, Swing, JavaFX & SWT 6
I EventDispatchThread Exception AWT, Swing, JavaFX & SWT 5
M Problem: "ArrayIndexOutOfBounds Exception" AWT, Swing, JavaFX & SWT 11
C Out of Bounds Exception, Array of JTextField AWT, Swing, JavaFX & SWT 6
B JTable Vector Exception bei eigenem CellEditor AWT, Swing, JavaFX & SWT 3
D Seltsame AWT-Exception AWT, Swing, JavaFX & SWT 2
M Button und Exception mit NetBeans AWT, Swing, JavaFX & SWT 3
P paint null pointer exception AWT, Swing, JavaFX & SWT 3
M Exception Meldung aus Thread an jTextField1 übergeben AWT, Swing, JavaFX & SWT 6
A Null pointer exception beim Neuzeichnen AWT, Swing, JavaFX & SWT 4
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben