2017-08-31 63 views
0

我設計的JTable這樣的:JTable的頭突然改變其列名

enter image description here

當我編譯我的Java GUI Netbeans的程序,它有沒有問題:

enter image description here

但是當我按了一個JButton,我用這個代碼上傳了excel:

private void b_browseActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    int column, row; 
    JFileChooser chooser = new JFileChooser(); 
    chooser.showOpenDialog(this); 
    File file = chooser.getSelectedFile(); 
    chooser.setFileFilter(new FileNameExtensionFilter("Excel File", "xls")); 
    String al = file.getAbsolutePath(); 
    File excelFile = new File(al); 
    if(!file.getName().endsWith("xls")){ 
JOptionPane.showMessageDialog(null, 
    "Pilih file Excel (.xls) saja!", 
    "Error",JOptionPane.ERROR_MESSAGE); 
} 
else 
{ 
if (excelFile.exists()) { 
    try { 
     Workbook workbook = Workbook.getWorkbook(excelFile); 
     Sheet sheet = workbook.getSheets()[0]; 
     TableModel model = new DefaultTableModel(sheet.getRows(), sheet.getColumns()); 
     DefaultTableModel model2 = new DefaultTableModel(null, JdlTabel); 
     for (row = 0; row < sheet.getRows(); row++) { 
      for (column = 0; column < sheet.getColumns(); column++) { 
       String content = sheet.getCell(column, row).getContents(); 
       model.setValueAt(content, row, column); 
       data[row][column]=Double.parseDouble(content); 
       n_data = sheet.getRows(); 
       k_data = sheet.getColumns(); 

      } 
     } 
     j_latih.setModel(model2); 
     j_latih.setModel(model); //input data to Jtable 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Error : " + e); 
     e.printStackTrace(); 
    } 

} else { 
    JOptionPane.showMessageDialog(null, "There is no data!"); } 
} 
    cek_kmeans=0; 
    cek_data=1;//control tombol  
}           

突然表格列名稱變更如下:

enter image description here

那麼,什麼是錯的?我該如何解決?

回答

1

JTable的頭突然改變其列名

DefaultTableModel model2 = new DefaultTableModel(null, JdlTabel); 

在重新創建表格模型,您指定的列標題「空」。所以使用默認標題。

的解決方法是:當你重新創建模型

  1. 使用原始列名。
  2. 不要重新創建整個模型。相反,您可以使用DefaultTableModel. Then you use the addRow(...)method of the DefaultTableModel`的setRowCount(0)刪除當前模型中的所有行,以一次將數據加載回模型一行。
+0

但問題是,當我上傳要顯示的Excel文件時,jtable列的名稱發生了變化。 –

+0

@YohanesSetiawan,該表獲取TableModel的列名稱。每當你設置一個新模型時,你都會得到新的列名。當你使用「null」作爲列名時,你希望發生什麼? – camickr