eqq2002
发贴: 22
积分: 0
|
于 2006-07-06 00:52
有一个从delphi的demo迁移过来的集合thread和排序算法的程序, 目标 1.在3个panel同时按照同一数组的值drawLine, 2.对数组同时进行a:bubbleSort;b:selectionSort;c:quickSort; 3.3个panel相应的进行重绘 为此我建立了一下几个类, class RandomIntArray: 随机生成数组类
abstract class DrawPanel extends JPanel: 绘制数组的panel, 其中abstract void sortArray();
class BubbleSortPanel extends DrawPanel implements Runnable class SelectSortPanel extends DrawPanel implements Runnable class QuickSortPanel extends DrawPanel implements Runnable 实现void sortArray(); 实现runnable接口 public void run(){ sortArray(); }//End of run
class Chp7Frame extends JFrame: 用户UI包含bubbleSortPanel,selectSortPanel,quickSortPanel 和JButton:performBTN void performBTNActionPerformed( ActionEvent e ){ Thread x =new Thread ( bubblePanel ); x.start(); Thread y = new Thread ( selectPanel ); y.start();
Thread z = new Thread ( quickPanel ); z.start();
}//End of performBTNActionPerformed
但,单个绘制的很顺利,奇怪的是3个panel无法同时绘制,
有关绘制的代码如下 void swap( int[] array, int first , int second ){
int tmp = array[first];
array[ first ] = array[ second ];
array[ second ] = tmp; Graphics g = this.getGraphics(); eraseLine( first , g ); drawLine( first, g ); eraseLine( second , g ); drawLine( second , g ); }//End of swap
怀疑是对线程方面的考虑不够,或者swing本身的线程的特点所致,有没有办法解决呢
|