У меня есть таблица, которая представляет собой много данных. Это код для создания этой таблицы
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);
}
За помощью, спасибо вам большое...
Как уже сказано в комментарии, 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);
}
}
это может помочь вам:
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;
}
defaultTableModel.setRowCount(0);
должен сделать работу.