2013-12-03 77 views
1

嗨,我使用的Java Swing使Java GUI應用程序,從MySQL中獲取數據,之後把每一行成一個JLabel,這增加一定的JPanel。添加的JLabel大量的JPanel迅速

我的問題是,當我取回比4K行更多的應用程序需要0.3分鐘,得到上面完成,時間隨着行數增加的過程。

我計算從MySQL的延遲,它是爲每個60K行20.26秒,當我該應用計算它是對於相同量的行的幾乎2.5分鐘。

所以我的問題是有什麼,加速比將我的應用程序中(mysql的,JAVA)的術語。

+1

您是否需要同時查看所有標籤?你可以有多個頁面,每個頁面只需要抓取10-20行。 – DoubleDouble

+0

是的,但我在搜索和閱讀2個答案後,我不會使用JLabel我將使用JTable,因爲@SuicideClyde許多對象創建是昂貴和錯誤的方法,thnx傢伙。 –

回答

5

從MySQL獲取數據,然後將每行放入JLabel並將 添加到某個Jpanel。

  • 使用JTable,搜索ResultSetTableModelTableFromDatabase
當我取比4K行更

我的問題是應用程序需要0.3分鐘 得到上面做的過程和時間隨着 行數的增加而增加。

  • 4k超過人類的能力標準工作時間內

我計算從MySQL的延遲,它是爲每個60K 行20.26秒,當我計算使用一串數據的對於應用程序來說,它幾乎是2.5分鐘的 相同數量的行。

  • 創建一個批處理邏輯,運行ResultSetSwingWorkerpublish()100rowsResultSetTableModelTableFromDatabase,然後用戶就可以看到第一個100row相當immediatelly,行的其餘部分由搖擺工作者管理工作者線程加入

  • 是方便,簡單和可能分裂一個巨大的查詢設置的查詢,創建SQL查詢分頁功能,

+0

謝謝你,把我的一個問題放在你的最後答案中,你的意思是我會抓住每一百行,之後我會更新Jtable直到我完成查詢的權利? –

+0

不顯示批次包含來自一個大結果集的100行,然後接下來100rows (以此類推直到結束),更新到Swing GUI被分割爲部分更新 – mKorbel

3

對象創建是一個昂貴的過程。我建議不要爲您從數據庫中提取的每個字段創建單獨的標籤。是否有任何理由選擇不使用JTable/TableModel?看起來這將是在數據庫中表示數據表的最佳工具。有很多關於如何在Web上使用JTable的例子,所以我不會在這裏描述。

作爲一個實驗,以確定是否JLabel的創建是促進你的問題,對於每一行,而不是每場一個JLabel的創建一個單一的標籤,看看有多少改善的事情。

我也是第二mKorbel的建議,如果立即響應希望以批處理的事情。這使您可以在用戶查詢和展示餘下的資產時立即向用戶提供一些數據。

這對你的大型數據集非常適用,只要用戶在做出決定或得出所需結論之前不需要所有的信息(即 - 解決導致他們首先查詢的問題) 。如果是這種情況,一個繁忙的指標可能是最好的。

祝你好運!