<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    feng

    飄逸~~~~~life

    Jtable的逐行顯示解決方法一個

     

    因為公司的項目要求最近接觸了點SWING的東西,用到了jtable,原本

    使用類似

    Object[][] o;

    jTable1.setModel(new javax.swing.table.DefaultTableModel(o, new String[]{

                        "行號", "倉庫名稱", "化學品名稱", "計量單位", "已記錄庫存", "實際庫存", "是否一致"

                    }

    我們只需要根據我們數據量的大小動態的初始化Object[][] o的大小,然后下面一個一個賦值,比如

    O[0][0]表示第一行第一列的值,一個一個賦值,然后

    jTable1.repaint();重新繪圖就可以了。

    顯示方法具體就不介紹了,我想介紹下逐行顯示的問題。如果數據量小的話,你直接用上面的就可以了。

    但是數據量大的時候,得到我們的數據可能就要很長的時間,反正是所有的賦值結束才能顯示出來。于是我們就想有逐行顯示的效果。

    然后你會發現一個增加一行的方法,是這樣的

    model.insertRow(table.getSelectedRow(), new Object[] {

          "追加列_0_0_0", "追加列_0_0_0", "追加列_0_0_0" });

    調用這個就可以往最后增加一行

    也許一開始我們肯定都是這樣,有個監聽觸發

    類似如下:

    publicvoid actionPerformed(ActionEvent e) {

    //1.得到我們要顯示的數據集合

    //2.循環調用上面的 insertRow方法

    //我就用個循環代替下

    for(int i=0;i<100;i++){

                     model.insertRow(model.getRowCount(), new Object[] { "追加列_0_0",

                       "追加列_0_0", "追加列_0_0" });

                   

                            Thread.sleep(1000);

              

    }

    }

    我們期待的結果:

    插了一行,過了一秒,下一行出來了

    實際的結果呢?

    等著,沒反應,最后100條一起顯示出現。

    實際上這個問題我困惑了蠻久,最后終于發現了原因,只要是監聽,只有等等個監聽方法執行完畢了,它才開始刷新界面。你調用什么刷新方法都是沒用的。

    那么我們怎么解決呢?

    當然是線程拉,簡單的講就是監聽方法只負責啟動線程。

    插入的部分放到線程的RUN里。

    類似下面:

    publicvoid actionPerformed(ActionEvent e) {

         Thread thread= new Thread(this);

           thread.start();

         }

    publicvoid run() {

        // TODO Auto-generated method stub

       

        while(true){

          

                     model.insertRow(model.getRowCount(), new Object[] { "追加列_0_0",

                       "追加列_0_0", "追加列_0_0" });

                   // System.out.println(model.getRowCount());

                   

              

                  Thread.currentThread().sleep(1000);

               }

    }

    這只是一個示例,實際的情況是還需要去數據庫取藥顯示的集合,我給大家一個建議

    啟兩個線程,一個線程負責查詢集合,一個線程負責插入,

    插入的線程需要實時的查看數據集合是否有新的數據,有馬上顯示出來。

    這樣的話,即使計算量很大,我們也不需要全部計算完成,才可以一條條顯示,增加喲過戶體驗哦。

    給大家一個可以運行的JAVA文件吧,有興趣的可以下載來看看那。

    點中間那個按鈕絕對一行行逐行顯示的。
    Jtable.java

    posted on 2009-10-30 17:24 feng 閱讀(2132) 評論(4)  編輯  收藏

    Feedback

    # re: Jtable的逐行顯示解決方法一個[未登錄] 2009-11-02 11:50 zeyuphoenix

    SwingUtilities.invokeLater(runable)
    接口里.fireTableDataChanged();我一般都這樣實現  回復  更多評論   

    # re: Jtable的逐行顯示解決方法一個 2009-11-02 17:26 咖啡妝

    如何解決效率,這樣應該會不停的刷界面吧。  回復  更多評論   

    # re: Jtable的逐行顯示解決方法一個[未登錄] 2009-11-03 08:57 feng

    這樣沒有刷新整個界面,局部的,就是增加一行@咖啡妝
      回復  更多評論   

    # re: Jtable的逐行顯示解決方法一個 2009-11-04 17:46 keer

    ..  回復  更多評論   



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费特级黄毛片在线成人观看| a级日本高清免费看| 成人免费大片免费观看网站| 久久99国产亚洲精品观看| 99精品视频免费| 亚洲精品国产精品乱码在线观看| 永久免费观看黄网站| mm1313亚洲精品国产| 国产成人亚洲精品播放器下载| 女人被男人躁的女爽免费视频 | 77777亚洲午夜久久多人| 一级毛片免费一级直接观看| 亚洲日韩国产成网在线观看| 久久WWW免费人成—看片| 国产成A人亚洲精V品无码| 99久久久国产精品免费牛牛四川| 怡红院亚洲红怡院在线观看| 日本一道在线日本一道高清不卡免费 | 中文字幕av无码不卡免费| 亚洲色自偷自拍另类小说 | 99久久国产免费中文无字幕| 亚洲人成网站18禁止久久影院| 最新仑乱免费视频| 国产亚洲综合精品一区二区三区| 亚洲综合无码精品一区二区三区| A片在线免费观看| 亚洲男女一区二区三区| 天天摸天天操免费播放小视频 | 亚洲人成网站999久久久综合| 免费观看四虎精品国产永久 | 久久午夜无码免费| 亚洲资源最新版在线观看| 日韩a级毛片免费观看| 一级毛片免费全部播放| 亚洲视频免费在线播放| 亚洲色欲色欱wwW在线| 亚洲成a人在线看天堂无码| 一级毛片免费播放男男| 精品亚洲成AV人在线观看| 最近的中文字幕大全免费版| 无遮挡免费一区二区三区|