2014-09-01 117 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

相关问题