Я попытался выполнить следующий код, но проблема в том, что jProgressBar обновляется и увеличивается только на значение, когда все действия являются дополнительными. Я бы использовал sh полосу для постепенного увеличения шага за шагом, так как это очень сложная задача.
excelProgressBar.setValue(0);
allLabel1.setText("");
allLabel2.setText("");
DefaultTableModel ImportFromExcelFormModel = (DefaultTableModel) importExcelTable.getModel();
int jTableRows = importExcelTable.getRowCount();
allLabel2.setText(String.valueOf(jTableRows));
for (int i = 0; i < jTableRows; i++) {
excelProgressBar.setValue(i + 1);
importedExcelMemberName = ImportFromExcelFormModel.getValueAt(i, 0).toString();
importedExcelIDNumber = ImportFromExcelFormModel.getValueAt(i, 1).toString();
importedExcelMemberNumber = ImportFromExcelFormModel.getValueAt(i, 2).toString();
importedExcelPayrollNo = ImportFromExcelFormModel.getValueAt(i, 3).toString();
importedExcelSalaryAccount = ImportFromExcelFormModel.getValueAt(i, 4).toString();
importedExcelCellphone = ImportFromExcelFormModel.getValueAt(i, 5).toString();
importedExcelEmployer = ImportFromExcelFormModel.getValueAt(i, 6).toString();
importedExcelJan = ImportFromExcelFormModel.getValueAt(i, 7).toString();
importedExcelFeb = ImportFromExcelFormModel.getValueAt(i, 8).toString();
importedExcelMarch = ImportFromExcelFormModel.getValueAt(i, 9).toString();
importedExcelApril = ImportFromExcelFormModel.getValueAt(i, 10).toString();
importedExcelMay = ImportFromExcelFormModel.getValueAt(i, 11).toString();
importedExcelJune = ImportFromExcelFormModel.getValueAt(i, 12).toString();
importedExcelJuly = ImportFromExcelFormModel.getValueAt(i, 13).toString();
importedExcelAugust = ImportFromExcelFormModel.getValueAt(i, 14).toString();
importedExcelSept = ImportFromExcelFormModel.getValueAt(i, 15).toString();
importedExcelOctober = ImportFromExcelFormModel.getValueAt(i, 16).toString();
importedExcelNovemebr = ImportFromExcelFormModel.getValueAt(i, 17).toString();
importedExcelDecember = ImportFromExcelFormModel.getValueAt(i, 18).toString();
now = LocalDateTime.now();
captureDate = dtf1.format(now);
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/tntdividend", "root", "");
ps = con.prepareStatement("INSERT INTO dividedpayslip( MemberName, IDNumber, MemberNo, PayrollNo, SalaryAccount, CellPhoneNo, "
+ "Employer, Jan, Feb, March, April, May, June, July, Aug, Sept, Oct, Nov, DecMonth ) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
ps.setString(1, importedExcelMemberName);
ps.setString(2, importedExcelIDNumber);
ps.setString(3, importedExcelMemberNumber);
ps.setString(4, importedExcelPayrollNo);
ps.setString(5, importedExcelSalaryAccount);
ps.setString(6, importedExcelCellphone);
ps.setString(7, importedExcelEmployer);
ps.setString(8, importedExcelJan);
ps.setString(9, importedExcelFeb);
ps.setString(10, importedExcelMarch);
ps.setString(11, importedExcelApril);
ps.setString(12, importedExcelMay);
ps.setString(13, importedExcelJune);
ps.setString(14, importedExcelJuly);
ps.setString(15, importedExcelAugust);
ps.setString(16, importedExcelSept);
ps.setString(17, importedExcelOctober);
ps.setString(18, importedExcelNovemebr);
ps.setString(19, importedExcelDecember);
ps.executeUpdate();
ps.close();
con.close();
allLabel2.setText(String.valueOf(dcf.format(jTableRows)));
} catch (ClassNotFoundException | SQLException | InstantiationException | IllegalAccessException e) {
System.out.println(e);
JOptionPane.showMessageDialog(this, " Error !!", "Error!" + e, JOptionPane.ERROR_MESSAGE);
}
allLabel1.setText(String.valueOf(dcf.format(i + 1)));
System.out.println("Inserted " + i);
}
JOptionPane.showMessageDialog(null, dcf.format(jTableRows) + " Records Processed Successfully");
excelProgressBar.setValue(0);
Приведенный выше код работает хорошо, и данные хорошо вставляются в мою базу данных. Большая проблема в том, что индикатор выполнения быстро обновляется только в конце программы после ожидания около 7 минут. Пожалуйста, помогите.