Verschiebung in JTable

MasterHimself

Mitglied
Hallo,

ich habe ein Problem mit einem JTabel. Ich nutze diesen als Darstellung für eine Playlist.
Nun möchte ich eine Funktion implementieren, die dem Benutzer erlaubt ein Element auszuwählen und dann an eine neue Stelle zu ziehen, wie kann man das realisieren?
Ich müsste also herausfinden wie das Element heisst auf welche geklickt wird, und die
Position an der die Maus wieder losgelassen wird, dann soll die Playlist den Entry an
diese Stelle setzen und alle anderen Playlistelemente entsprechend verschieben.

Kann mir jemand weiterhelfen?

PS: Die Playlist besteht aus einem Array vom Typ PlaylistEntry (Abgeleitet von File)
 
Also hab das Problem mittlerweile selbst gelöst:
Code:
...
...
  table.addMouseListener(new MouseAdapter(){
  
        	public void mousePressed(MouseEvent e){
        		source = table.rowAtPoint(e.getPoint());
        	}
        	
        	public void mouseReleased(MouseEvent e){
        		target = table.rowAtPoint(e.getPoint());
        		insertAt(source,target);
        	}
        });
...
...
 private static void insertAt(int source,int target){
		 if(source == target) return;
		 if((target < 0) || (source < 0)) return;
		 if(source > target){
			 ++target;
			 if(target == source) return;
			 PlaylistEntry tmp = playlist[source];
			 for(int i = source;i > target;--i)
				 playlist[i] = playlist[i-1];
			 playlist[target] = tmp;
		 }
		 else{
			 PlaylistEntry tmp = playlist[source];
			 for(int i = source;i < target;++i)
				 playlist[i] = playlist[i+1];
			 playlist[target] = tmp;
		 }
		 model.update();
		 model.fireTableDataChanged();
	 }
...
...
 

Neue Beiträge

Zurück