如何使JTable显示所有记录形式的数据库

时间:2014-09-01 18:14:39

标签: java swing

我的问题是当我运行程序时,JTable显示的数据但是并不显示所有记录,虽然我在其中有一个滚动窗格和一个Jtable,当我运行时它提供了一个滚动但是对于第一个很少的记录,jtable有一个文本字段提供使用rowSorter在表中搜索,虽然当我搜索未查看的记录时jtable没有显示所有记录我得到它。这是一个描述问题的图像。请问如何解决这个问题。 这是我无权在这里附上图像的链接 http://www.megafileupload.com/en/file/561971/Untitled-jpg.html 这是我初始化这些组件的代码片段

    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);
}

我希望现在很清楚

1 个答案:

答案 0 :(得分:1)

也许你的滚动窗格有问题(比如:没有可见的滚动条) 你确定你使用它是正确的吗?
这对我来说很奇怪:
您创建一个ViewPort并将其设置为View?!

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

为什么不将表格设置为ViewportView(顾名思义?) 只是:

scrollPane_1.setViewportView(table2);

修改:有关ViewPort的信息:
“视口”或“舷窗”,通过它您可以看到基础信息。滚动时,视口移动的是什么。这就像窥视相机的取景器。向上移动取景器会在图片顶部显示新内容,并丢失底部的内容 http://docs.oracle.com/javase/7/docs/api/javax/swing/JViewport.html