2016-04-25 48 views
0

程序將允許用戶進行搜索。 搜索結果顯示在JTable中。 用戶可以選擇一個行,然後點擊一個名爲「編輯」的按鈕,對該特定的「項目」進行一些編輯。自動更新使用列表填充的JTable <T>

一旦信息被編輯,他點擊確定,jtable沒有被更新。編輯前

表:

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

用戶點擊按鈕 「編輯」 和編輯的最後一個字段 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]; 
     } 
    }; 
} 
+0

到目前爲止,你還沒有問過問題 – MadProgrammer

+0

問題出在那裏,但你必須仔細閱讀: 一旦信息被編輯,他點擊確定,jtable沒有被更新。 –

+2

不,我在任何地方都看不到'?',我看到的只是*「程序將會...」*,*「一旦信息... *」就是語句。但是如果你喜歡隱藏這些東西,那麼我希望你找到答案 – MadProgrammer

回答

0

我通過再次調用方法creerJTable並將它傳遞給新List來修復它!

它是這樣一行代碼: creerJTable(uneListe);

謝謝你的努力!