我正在使用JChart2d(http://jchart2d.sourceforge.net/index.shtml)動態跟蹤雙數組的值。當我在主要方法中編寫配置並運行它時,它運行得很完美。如何使用另一個JFrame調用JChart2D動態圖
這裏是代碼。
public class WaveTracer {
ITrace2D trace ;
Chart2D chart ;
double dataArray [];
JFrame frame;
public WaveTracer(int limit , double [] data){
trace = new Trace2DLtd(limit);
dataArray = data;
}
public void configure(String framename, int fwidth , int fheight, int xpos , int ypos){
try{
chart = new Chart2D();
trace.setColor(Color.RED);
frame = new JFrame(framename);
frame.addWindowListener(new WindowAdapter() {
/**
* @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent)
*/
@Override
public void windowClosing(final WindowEvent e) {
System.exit(0);
}
});
frame.getContentPane().add(chart);
frame.setSize(fwidth, fheight);
frame.setLocation(xpos, ypos);
}catch (Throwable f) {
System.exit(0);
}
}
public void trace(int speed) throws InterruptedException{
frame.setVisible(true);
chart.addTrace(trace);
for (int j = 0; j < dataArray.length; j++) {
trace.addPoint(j,dataArray[j]);
Thread.sleep(speed);
}
System.exit(0);
}
public static void main(String args []){
Random random = new Random();
double d[] = new double[2000];
int count=1;
for(int i=200;i>=0;i--){
d[200-i] = random.nextDouble()*10.0;
}
WaveTracer wavetracer = new WaveTracer(5000, d);
wavetracer.configure("plying wave form with time", 1000, 500, 200, 200);
try {
wavetracer.trace(150);
} catch (InterruptedException ex) {
Logger.getLogger(FrequencyDitectorForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
但我需要繪製圖表,當我點擊一個「繪製」按鈕,在另一種形式。我創建了一個包含「Draw」按鈕的表單,並將以下代碼添加到動作單擊中。
JFrame dialog = new JFrame();
Random random = new Random();
double d[] = new double[2000];
int count=1;
for(int i=200;i>=0;i--){
d[200-i] = random.nextDouble()*10.0;
}
WaveTracer wavetracer = new WaveTracer(5000, d);
wavetracer.configure("plying wave form with time", 1000, 500, 200, 200);
try {
wavetracer.trace(150);
} catch (InterruptedException ex) {
Logger.getLogger(FrequencyDitectorForm.class.getName()).log(Level.SEVERE, null, ex);
}
但是當我點擊該按鈕只有新的框架加載和顯示沒有在框架中。然後我通過在循環中添加一個消息框來測試循環。在這種情況下,它會顯示循環的每次迭代的圖形。
可以有一個人請幫助我在這個問題上。我怎樣才能從一個單獨的表單繪製此圖,而不會在循環的每個循環中觸發一個消息框。
嗨氣墊船,謝謝你的提示。我將它改爲定時器,然後用我的代碼刪除這些system.exit(0)。現在它工作正常。然後我用JDialog替換了jFrame。現在它工作正常。 :) – Thilanka 2011-05-02 04:16:36
@Thilanka:很高興它有幫助,但你可能再次想要接受我的答案,然後在你以前的線程中的其他答案。 – 2011-05-02 04:27:10