2014-09-01 165 views
0

我的問題是當我運行程序數據顯示在JTable但不是所有記錄都顯示,雖然我有一個滾動窗格和aJtable裏面,當我運行它提供了滾動但對於第一個記錄,jtable有一個文本域,用於使用rowSorter在表中提供搜索,但當我搜索未查看的記錄時,jtable不會顯示所有記錄。我得到它。這是描述問題的圖像。請問我該如何解決這個問題。 這是鏈接我無權武官這裏 http://www.megafileupload.com/en/file/561971/Untitled-jpg.html 這是一段代碼,其中i初始化這些成分的圖像如何使JTable顯示數據庫中的所有記錄

table2 = new JTable(tableModel); 


    table2.setFont(new Font("Tahoma", Font.PLAIN, 16)); 
    table2.getTableHeader().setFont(new Font("Tahoma", Font.BOLD, 14)); 


    scrollPane_1.setColumnHeaderView(table2.getTableHeader()); 
    table2.setBackground(new Color(210, 180, 140)); 
    table2.setBorder(new LineBorder(new Color(105, 105, 105))); 
    table2.setForeground(new Color(0, 0, 0)); 
    sorter2 = new TableRowSorter<TableModel>(table2.getModel()); 
    table2.setRowSorter(sorter2); 
    JViewport vp2 = new JViewport(); 
    vp2.setBackground(new Color(210, 105, 30)); 
    vp2.setForeground(new Color(0, 0, 0)); 
    scrollPane_1.setViewportView(vp2); 
    vp2.add(table2); 

這是填充表

table2Data = new Vector<>(); 
    Iterator<SellBean> buyIt = boughtedList.iterator(); 
    while (buyIt.hasNext()) { 
     SellBean buyBean = buyIt.next(); 
     Vector rec = new Vector<>(); 

     rec.add(buyBean.getPRODUCT_ID()); 

     rec.add(buyBean.getPRODUCT_NAME()); 
     // System.out.println(buyBean.getPRODUCT_NAME()); 
     rec.add(buyBean.getQUANTITY()); 
     rec.add(buyBean.getBUY_PRICE()); 
     rec.add(buyBean.getSELL_PRICE()); 
     rec.add(buyBean.getPROFIT()); 
     rec.add(buyBean.getBUY_DATE()); 
     rec.add(buyBean.getRETURNED()); 
     table2Data.add(rec); 
    } 
    tm2.setDataVector(table2Data, table2ColNames); 
    for (int i = 0; i < table2.getColumnCount(); i++) { 
     DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); 
     centerRenderer.setHorizontalAlignment(JLabel.CENTER); 
     table2.getColumnModel().getColumn(i) 
       .setCellRenderer(centerRenderer); 
    } 

    for (int i = 0; i < table2.getRowCount(); i++) { 

     table2.setRowHeight(i, 28); 
    } 
    table2.getColumnModel().getColumn(0).setPreferredWidth(25); 
} 

方法i希望現在清楚

+3

這個問題的寫法是''猜測爲什麼我沒有顯示你的代碼不能正常工作''類型的問題。請通過創建併發布您的[最小代碼示例程序](http://stackoverflow.com/help/mcve)來修復此問題,以便我們進行審查,測試並可能進行修復。只需要更多的工作,你很快就可以得到一些體面的答案。 – 2014-09-01 18:25:44

+0

我還不確定你的bug在哪裏。再次考慮創建併發布[MCVE](http://stackoverflow.com/help/mcve)。 – 2014-09-01 18:58:03

+0

這個方法從數據庫表中獲取所有記錄,但Jtable不顯示所有檢索到的記錄,它只顯示前幾條記錄,儘管它提供了scroll.can,你可以看到圖像嗎? – 2014-09-01 19:04:57

回答

1

也許你有問題的滾動面板(如:沒有滾動條可見)。
你確定你使用它正確嗎?
這對我來說看起來很奇怪:
您創建一個ViewPort並將其視爲View ?!

JViewport vp2 = new JViewport(); 
scrollPane_1.setViewportView(vp2); 
vp2.add(table2); 

爲什麼不設置表作爲ViewportView
剛(顧名思義):

scrollPane_1.setViewportView(table2); 

編輯:關於視見信息:
的 「視口」 或「舷窗「,通過它你可以看到基礎信息。當您滾動時,視口會移動什麼。這就像通過相機的取景器窺視。向上移動取景器會在圖片頂部顯示新的內容,並丟失底部的東西。
http://docs.oracle.com/javase/7/docs/api/javax/swing/JViewport.html

+0

+1此外,如果您在實例化滾動窗格時將參數作爲參數傳遞,則會自動將其設置爲其視圖端口。 – dic19 2014-09-02 16:33:08

+0

好的,謝謝你,我會嘗試這個 – 2014-09-02 20:59:16

+0

它已經工作,因爲我想,謝謝,但我有一個問題,你說:「你創建一個ViewPort並把它作爲視圖?!爲什麼不把表設置爲ViewportView(作爲名稱意味着?)我把表放在viewPort中,並將視口設置爲scrollpane,如果這是錯誤的,那麼JViewPort的重要性是什麼 – 2014-09-02 21:14:26

相關問題