2012-05-16 69 views
0

我有一個GUI和點擊事件,我打電話數據庫查詢生成多個圖表。在所有圖表完成之前,我看不到任何圖表,意味着在第一個圖表完成並顯示其內容之前,GUI組件會出現某些問題,它們會移至下一個圖表。可能的原因是什麼以及如何避免這種問題?的Java Swing - UI模塊

+1

你能展示一些代碼嗎? – Jonas

回答

3

沒有與該組件沒有問題。您的設計存在問題。您正在執行長時間運行的查詢以及在事件分派線程中運行的單個方法中圖表的更新。通過這樣做,EDT完全被阻塞,並且不能重新繪製任何東西,直到所有查詢都已運行並且所有圖表都已生成爲止。

使用後臺線程來執行查詢,並生成圖表,在EDT,每一個查詢完成時間。 SwingWorker類有助於做到這一點。有關Swing中的併發性,請閱讀its API docthe tutorial

+1

感謝您的評論。我有同樣的感覺。請在下面找到我在做什麼btnGenerateGraph.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){//爲MYSQL生成圖形mysqlGrpahGenerator.generateMYSQLGraph(); luceneGraphGenerator.generateLuceneGraph();});你想讓我在代碼中改變的地方? – Jone

+1

那麼,你已經閱讀了javadoc和我鏈接的教程?如果沒有,然後閱讀它們。這裏都有解釋。如果你已經閱讀過它們,然後重新閱讀它們,因爲你似乎沒有理解他們解釋的內容。 –

+0

好吧,我衝它,我知道是什麼問題。現在我想在代碼中進行更改,但我沒有得到更新代碼的位置。其實方法generateMYSQLGraph();生成8-10圖,這就像我必須使用運行8-10次:( – Jone