我有一个程序,允许用户在仓库中进行搜索。结果在 JTable 中返回。
到目前为止一切都很好。当我尝试进行第二次搜索时,旧表仍然显示。
图片:
代码:
public void panelTable(){
panelTable= new JPanel();
panelTable.setSize(400, 80);
panelTable.setOpaque(true);
panelTab = new JTable();
modele = new DefaultTableModel();
}
public void creerJTable(List<Pneu> liste){
String[] head= {"A", "B", "C"};
Object[][] data = null;
data = new Object[liste.size()][3];
Iterator<Pneu> it = liste.iterator();
int index = 0;
while(it.hasNext()){
Pneu unPneu = it.next();
data[index][0] = unPneu.descrip();
data[index][1] = unPneu.width();
data[index][2] = unPneu.height();
index++;
}
modele.setDataVector(data, head);
panelTab.setModel(modele);
panelTab.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
panelTab.setFillsViewportHeight(true);
panelTab.setPreferredScrollableViewportSize(new Dimension(500, 80));
panelTab.setModel(modeleColonnesNoEdit(data, entete));
panelTab.setRowSelectionInterval(0, 0);
panelTab.getColumnModel().getColumn(0).setPreferredWidth(250);
panelTab.getColumnModel().getColumn(1).setResizable(false);
panelTab.getColumnModel().getColumn(1).setPreferredWidth(50);
panelTab.getColumnModel().getColumn(2).setResizable(false);
panelTab.getColumnModel().getColumn(2).setPreferredWidth(50);
JScrollPane scrollPane = new JScrollPane(panelTab);
scrollPane.setPreferredSize(new Dimension(500, 60));
panelTable.add(scrollPane);
}
单击搜索按钮时,您将进入监听器类,该类将验证是否单击了按钮搜索。完成后,您将获得以下代码:
frame.creerJTable(列表);
这行代码获取从该搜索创建的列表,并调用上面代码中显示的方法 creerJTable(List liste)。
这是 modeleColonnesNoEdit() 的代码
private DefaultTableModel modeleColonnesNoEdit(Object[][] data, String[] head) {
return new DefaultTableModel(data, head)
{
boolean[] columnEditables = new boolean[] { false, false, false};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
};
}
最佳答案
您不应在搜索中重新添加 JScrollPane 或向 GUI 添加任何新组件。相反,采用原始 JTable,只需更改其 TableModel,仅此而已,无需执行任何其他操作。
关于java - JTable 中的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818658/