Как обновить jLabel в цикле while? Мое понимание заключается в использовании javax.swing.timer, однако я не совсем понимаю его, потому что мне нужно также выполнить действие, теперь это в цикле while, который должен обновлять счетчик каждый раз, когда он проходит через цикл while.Как обновить jLabel в цикле while
Есть ли более простой способ сделать это, и если да, то что я должен использовать вместо jLabel?
Пример кода ниже того, что мне нужно обновить.
int rowCount = 0;
while(rowIterator.hasNext())
{
jLabel5.setText(""+ rowCount); //<-- i need this to update
myRow = sheet.getRow(count);
cellIterator = myRow.cellIterator();
Cell myCell2 = myRow.getCell(0);
nextCell= myCell2.getStringCellValue();
if(nextCell.equals(firstCell))
{
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
System.out.print(cell.getStringCellValue()+",");
//System.out.print(cell.getStringCellValue() + "\t\t");
writer.write(cell.getStringCellValue()+",");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue()+",");
//System.out.print(cell.getStringCellValue() + "\t\t");
writer.write(cell.getStringCellValue()+",");
break;
}
}
System.out.println();
writer.newLine();
count++;
rowCount++;
}
else
{
writer.close();
myRow = sheet.getRow(count);
myCell2= myRow.getCell(0);
nextCell=myCell2.getStringCellValue();
firstCell=nextCell;
Matter = "Matter Number: "+firstCell;
num = firstCell;
System.out.println(Matter);
fWriter = new FileWriter(new File(directory, num+"_"+curdate+"_"+curtime+".csv"));
writer = new BufferedWriter(fWriter);
writer.write(Matter);
writer.newLine();
writer.write(header);
writer.newLine();
}
}
}
catch (Exception e)
{
}
Это не собирается работать, он собирается заблокировать ED T и не позволять ему обрабатывать любые запросы на перерисовку до тех пор, пока не будет существовать цикл (и метод, в котором он содержится) – MadProgrammer
Это невозможно, в основном, что я пытался сделать, должен быть какой-то сон, насколько я чтобы текст обновлялся в цикле. Например, каждый раз, когда цикл проходит, текст должен изменяться в jLable, поэтому для int он должен буквально показывать счет, происходящий на ярлыке. – Silentdarkness
Итак, вы вызываете 'setText', он помещает запрос в EDT для обновления пользовательского интерфейса и некоторое время в будущем, но в то же время вы продолжаете цикл, не позволяя EDT обрабатывать этот запрос и переписывать его. Хуже того, вы предлагаете «спать» на EDT или, что еще хуже, обновлять пользовательский интерфейс вне EDT. – MadProgrammer