как очистить данные в Jtable с помощью кнопки J

1

У меня есть таблица, которая представляет собой много данных. Это код для создания этой таблицы

DefaultTableModel model = (DefaultTableModel) Main_Menu.jTable3.getModel(); //Main menu is my form



            List<ReportCalculateSimiliarity> theListRCS = new ArrayList<ReportCalculateSimiliarity>();
            ReportCalculateSimiliarity rcs = new ReportCalculateSimiliarity();

            rcs.setNameOfMainFile(name);
            rcs.setNameOfComparingFile(enemy);
            rcs.setLevenstheins(resultOfLevenstheins);
            rcs.setSmithWaterman(resultOfSmithWaterman);

            theListRCS.add(rcs);


            for (ReportCalculateSimiliarity reportCalculateSimiliarity : theListRCS) {

                model.addRow(new Object[]{
                    reportCalculateSimiliarity.getMainFile(),
                    reportCalculateSimiliarity.getComparingFile(),
                    reportCalculateSimiliarity.getLevenstheins(),
                    reportCalculateSimiliarity.getSmithWaterman(),

                });
            }

и затем, у меня есть jbutton, чтобы сбросить эти данные. Код выглядит так:

private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
    int confirm = JOptionPane.showConfirmDialog(null, "clear ?", "end session", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
    if (confirm == JOptionPane.YES_OPTION) {
        //this is to clear that jtable
    }
} 

Я должен сделать это, потому что мой jTable подключен к jfreechart. Если данные в jtable не ясны, jfreechart будет неправильным, потому что предыдущие данные все еще существуют и создают бар в моей гистограмме. код гистограммы следующим образом:

public final CategoryDataset createDataset() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    dataset.clear();

    String algoritma1 = "Levensthein";
    String algoritma2 = "SmithWaterman";

    for (int i = 0; i < Main_Menu.jTable3.getRowCount(); i++) {

        Object fileName = Main_Menu.jTable3.getValueAt(i, 1);
        String fileNameToString = fileName.toString();

        Object nilaiLevensthein = Main_Menu.jTable3.getValueAt(i, 2); // Ambil Nilai Persentase Levensthein
        double count1 = Double.parseDouble(nilaiLevensthein.toString());

        Object nilaiSmithWaterman = Main_Menu.jTable3.getValueAt(i, 3);
        double count2 = Double.parseDouble(nilaiSmithWaterman.toString());

        dataset.addValue(count1, algorithm1, fileNameToString);
        dataset.addValue(count2, algorithm2, fileNameToString);

    }

За помощью, спасибо вам большое...

  • 3
    defaultTableModel.setRowCount(0); должен сделать работу.
  • 0
    Вы можете просто заменить модель таблиц на новую, но в этом случае было бы эффективно использовать setRwoCount
Теги:
swing
jfreechart
jbutton
jtable

2 ответа

4

Как уже сказано в комментарии, DefaultTableModel # setRowCount - это путь.

  private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
    int confirm = JOptionPane.showConfirmDialog(null, "clear ?", "end session", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
    if (confirm == JOptionPane.YES_OPTION) {
        ((DefaultTableModel) Main_Menu.jTable3.getModel()).setRowCount(0);
    }
} 
  • 0
    Мне жаль. Я бы очень хотел помочь вам с этим, но я не могу воспроизвести это поведение на моей машине. Выполнение предоставленного кода успешно очищает таблицу. Может быть, есть другая манипуляция данными после очистки? Это всего лишь предположение, так как размещены только части кода.
  • 0
    Ок, спасибо. Я должен решить эту проблему. Теперь все хорошо. Спасибо Mr.Pr0gr4mm3r ...
Показать ещё 1 комментарий
0

это может помочь вам:

   private void resetTable() {
        DefaultTableModel tableModel = getNewModel();
        jTable.setModel(tableModel);
   }

   private DefaultTableModel getNewModel() {
        DefaultTableModel model;
        model = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        model.addColumn("column 1");
        model.addColumn("column 2");
        model.addColumn("column 3");
        return model;
    }
  • 0
    как использовать предлагаемый код в моем коде, где я буду размещать ваш код? Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню