您好,我制作了一个代码,可以下载一个应用程序,而且一切正常。
我的问题是我想在框架上显示“请等到jar完成下载... 50%完成”我希望50%更改为正在下载的文件的左边%。
我得到了所有设置,但它改变的部分是不起作用。
继承我的代码:
while(( length = inputstream.read(buffer)) > -1)
{
down += length;
bufferedoutputstream.write(buffer, 0 , length);
String text = clientDL.label1.getText();
text += getPerc() + "%";
}
这是我的getPerc()方法:
private int getPerc() {
return (down / (sizeOfClient + 1)) * 100;
}
感谢。
答案 0 :(得分:1)
回答
“请等到jar完成下载...完成50%”我想要 要下载的文件的%左侧更改50%。
while(( length = inputstream.read(buffer)) > -1)
{
down += length;
bufferedoutputstream.write(buffer, 0 , length);
String text = clientDL.label1.getText();
int perc = getPerc();
if(perc <= 50)
{
text += getPerc() + "% done";
}else
{
text ="Please wait until the jar is downloading..."
text = text + (100 - perc) + " % remaining"
}
}
答案 1 :(得分:0)
这里的主要问题是Java不能在类似指针的逻辑上工作,所以使用getter获取变量然后为该变量赋值不会做任何事情。
您正在寻找的是
clientDL.label1.setText("Whatever text you want to put in the label");
(对于记录,您可能想要为该标签定义一个getter,而不是直接访问label1,这是不好的做法)
答案 2 :(得分:0)
您想使用回车符号
System.out.print("10%\r")
答案 3 :(得分:0)
我认为它应该或多或少是这样的:
String text = clientDL.label1.getText();
while(( length = inputstream.read(buffer)) > -1){
down += length;
bufferedoutputstream.write(buffer, 0 , length);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
clientDL.label1.setText(text + getPerc() + "%");
}
});
}
(我假设你是在一个非AWT-Event-Queue的线程中下载文件)
答案 4 :(得分:0)
I dont have enough reputation to comment i am unable to provide you solution adding comment to your question. Anyway i tried similar scenario
I think there is a problem with your clientDL.label1.getText(); just like what solutions suggested by Silverlord. Please refer Silverlord answer
public class Checker {
int length = 0;
InputStreamReader inputstream;
FileInputStream fis = null;
public void display() throws IOException
{
fis = new FileInputStream("C:\\Users\\298610\\Documents\\test.txt");
inputstream = new InputStreamReader(fis);
int i=0;
while(( length = inputstream.read()) > -1)
{
if(i<getPerc().length)
{
String text = null;
text = getPerc()[i] + "%";
System.out.println("Hi man "+text);
}
i++;
}
}
private int[] getPerc() {
return new int[]{10,20,30,40,50,60,70,80,90,100};
}
public static void main(String a[]) throws IOException
{
Checker w =new Checker();
w.display();
}
}
我得到的输出如下: 嗨男人10% 嗨男人20% 嗨男人30% 嗨男人40% 嗨男人50% 嗨男人60% 嗨男人70% 嗨男人80% 嗨男人90% 嗨男人100%