有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJTable标题突然更改了它的列名

我设计的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) 个答案

  1. # 1 楼答案

    JTable Header Suddenly Changed its Column Name

    DefaultTableModel model2 = new DefaultTableModel(null, JdlTabel);
    

    在重新创建表模型时,可以为列标题指定“null”。因此使用默认标题

    解决办法是:

    1. 重新创建模型时使用原始列名
    2. 不要重新创建整个模型。相反,您可以使用DefaultTableModel. Then you use theaddRow(…)的setRowCount(0)从当前模型中删除所有行method of theDefaultTableModel`一次将数据加载回模型中一行