java - JTable 中的搜索结果

标签 java swing jtable

我有一个程序,允许用户在仓库中进行搜索。结果在 JTable 中返回。

到目前为止一切都很好。当我尝试进行第二次搜索时,旧表仍然显示。

图片:

enter image description here

代码:

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/

相关文章:

java - Google map 有 Swing 组件吗?

java - 无法弄清楚如何在java中重叠图像

java - 在 java/swing 中关闭窗口时正确的操作是什么?

java - 使用 vector 编辑 JTable

java - 如何在 JTable 中显示/隐藏不同的行部分

java - 将显示 jComboBox 的渲染器链接到 jTable 中的单元格

java - Java 中的字数统计类不会对出现的每一个 "That"进行计数

java - 为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?

java - 如何从集群 Java 应用程序服务器记录到 syslog

java - Socket编程无法在真实的android设备中连接