我希望进度条显示正在读取的文件的百分比,但我似乎无法使用我的代码完成此操作。 进度条根本不会启动。我认为我的逻辑很乱。关于如何解决这个问题的任何建议?
以下代码:
public void run()
{
progressBar.setIndeterminate(false);
try
{
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
long fileSize = fileName.length();
String line = "";
String concatString = "";
keepGoing = true;
while((((line = br.readLine()) != null)) && keepGoing == true)
{
concatString += line; //concatenated string
int stringLength = concatString.length(); //length of concatenated string
int progressNum = (int) (stringLength / fileSize); //value to update progress bar
try
{
Thread.sleep(1000);
}
catch(InterruptedException ie)
{
ie.printStackTrace();
}
progressBar.setValue(progressNum);
}
progressBar.setString("Finished file read...");
progressBar.setIndeterminate(true);
synchronized(obj)
{
if(keepGoing == true)
{
keepGoing = false;
progressBar.setString("Halted!");
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
请记住我是初学者程序员。 编辑:我已经在进度条构造函数中设置了最小值和最大值(0,100)。
答案 0 :(得分:1)
你应该将其转换为百分比
int progressNum = (int) (stringLength / fileSize);
做
int progressNum = (int) (stringLength *100 / fileSize);
希望这有帮助。