java - Swing worker override process <T,V> -
i'm trying override process() method ensure code runs in edt. have made sure <t,v> matching throughout still won't let me override. here code:
final swingworker<arraylist<block>,integer[]> swingslavelabourer = new swingworker<arraylist<block>, integer[]>() { @override protected arraylist<block> doinbackground() throws exception { blocklist.doheavywork().. integer [] status = new integer[2]; status[0] = 1; status[1] = 0; this.process(status); return blocklist; } @override //wont allow override protected void process (integer[] chunks){ progressbar.setvalue(chunks[0]); } };
the process method takes list<v> argument. represents data chunks published. need change code to:
@override protected void process(list<integer[]> chunks) { // } you should not call directly process doinbackground method. instead, should call publish publish each chunk of data.
refer following example taken swingworker javadoc:
class primenumberstask extends swingworker<list<integer>, integer> { primenumberstask(jtextarea textarea, int numberstofind) { //initialize } @override public list<integer> doinbackground() { while (! enough && ! iscancelled()) { number = nextprimenumber(); publish(number); // each computed number published setprogress(100 * numbers.size() / numberstofind); // , progress updated } } return numbers; } @override protected void process(list<integer> chunks) { // in mean while, print each published value textarea (int number : chunks) { textarea.append(number + "\n"); } } }
Comments
Post a Comment