Can't override process() method in SwingWorker
event-dispatch-thread, java, multithreading, swing, swingworker
Solution
The SwingWorker class is defined as follows:
public class SwingWorker<T, V> {
...
protected void process(List<V> chunks) {
...
}
}
So, since your subclass is declared as
class RemotePlayersWorker extends SwingWorker<String[][], Object> {
The process method should take a `List<Object>` as argument, and not a `List<String[][]>`
Problem
I have a SwingWorker class as follows: ``` class RemotePlayersWorker extends SwingWorker<String[][], Object> { PlayerCanvas parent; RemoteHandler remote; String[][] players; int maximumConnections; public RemotePlayersWorker(PlayerCanvas parentCanvas, RemoteHandler remoteHandle) { this.parent = parentCanvas; this.remote = remoteHandle; } @Override protected String[][] doInBackground() throws Exception { System.out.println("TEST 1"); players = remote.getConnectedPlayers(); publish(players); return players; } @Override protected void process(List<String[][]> chunks) { for (String[][] chunk : chunks) { // no need for the c variable System.out.println(chunk.toString()); } } @Override protected void done() { } } ``` However, I'm getting errors when overriding the process(List chunks) method. Eclipse tells me this: ``` The method process(List) of type PlayerHandler.RemotePlayersWorker must override or implement a supertype method ``` However, as far as I can tell, I am overriding the method correctly - I get the same error regardless of what I set the list type to. Is there any other reason I wouldn't be able to override process()? I'm using java version "1.7.0_10" - Java(TM) SE Runtime Environment (build 1.7.0_10-b18)