我的问题是当我运行程序时,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);
}
我希望现在很清楚
答案 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