使用List <t>自动更新填充的JTable

时间:2016-04-25 00:15:02

标签: java swing jtable

该程序将允许用户进行搜索。 搜索结果显示在JTable中。 用户可以选择一个行并点击一个名为&#34;编辑&#34;的按钮。对某个&#34;项目进行一些编辑&#34;。

一旦信息被编辑并且他点击确定,jtable就不会被更新。

编辑前的

表:

http://i.stack.imgur.com/unRTk.jpg

用户点击按钮&#34;编辑&#34;并编辑最后一个字段 JTable仍然显示旧信息,它没有更新

http://i.stack.imgur.com/qmxd8.jpg

以下是代码:

public void panelTable(){
    panelTable = new JPanel()
    panelTable.setSize(400, 80);
    panelTable.setOpaque(true);
    table =  new JTable();
    modele  = new DefaultTableModel();
}

public String getData(int colonNb ,int index){
     String dataTab = data[colonNb][index] + "";

    return dataTab;
}


public void creerJTable(List<Pneu> liste){
    String[] head= {"A", "B", "c"};
    this.liste = liste;


    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.construireDecription();
        data[index][1] = unPneu.getPrix();
        data[index][2] = unPneu.getNombrePneus();
        index++;
    }


    modele.setDataVector(data, head);
    table.setModel(modele);
    table.setRowSelectionInterval(0, 0);
    componentScroll(data,head);

    nbSearch++;
}


public void componentScroll(Object[][] data, String[] head){
    if(nbSearch <= 0){
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.setFillsViewportHeight(true);
        table.setPreferredScrollableViewportSize(new Dimension(500, 80));
        table.setModel(modeleColonnesNoEdit(data, head));

        table.setRowSelectionInterval(0, 0);
        table.getColumnModel().getColumn(0).setPreferredWidth(250);
        table.getColumnModel().getColumn(1).setResizable(false);
        table.getColumnModel().getColumn(1).setPreferredWidth(50);
        table.getColumnModel().getColumn(2).setResizable(false);
        table.getColumnModel().getColumn(2).setPreferredWidth(50);

        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setPreferredSize(new Dimension(500, 60));

        panoTab.add(scrollPane);
    }   
}

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

1 个答案:

答案 0 :(得分:0)

我通过再次调用creerJTable方法并将其传递给新List来修复它!

这是一行代码: creerJTable(uneListe);

谢谢你的努力!