Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文本全部显示';马上就来?_Java_Swing_Jlabel - Fatal编程技术网

Java 文本全部显示';马上就来?

Java 文本全部显示';马上就来?,java,swing,jlabel,Java,Swing,Jlabel,我有一些jlabel用于我的更新程序,除了文本之外,一切都运行顺利 文本全部被置乱&看起来像是一次显示所有文本。我尝试将每个文本设置为它自己的标签&当方法被调用为不透明时,设置那些不相关的文本。但我得到了NullPointerException。我也尝试过将我的JFrame分层,但当它摆脱我的JProgsbar时 这是我的密码: public static void displayText(int Stage) { String txt = ""; if (Stage == 1)

我有一些jlabel用于我的更新程序,除了文本之外,一切都运行顺利

文本全部被置乱&看起来像是一次显示所有文本。我尝试将每个文本设置为它自己的标签&当方法被调用为不透明时,设置那些不相关的文本。但我得到了NullPointerException。我也尝试过将我的JFrame分层,但当它摆脱我的JProgsbar时

这是我的密码:

public static void displayText(int Stage) {
    String txt = "";
    if (Stage == 1) {
        txt = "Checking Cache...";
    } 
    if (Stage == 2) {
        txt = "Downloading Cache...";
    }
    if (Stage == 3) {
        txt = "Cache Download Complete!";
    }
    if (Stage == 4) {
        txt = "Unpacking Files...";
    } 
    if (Stage == 5) {
        txt = "Launching Client!";
    }
    lbl = new JLabel();
    lbl.setText(txt);
    lbl.setBounds(137, 11, 200, 14);
    frame.getContentPane().add(lbl);
}
我尝试过用几种不同的方式重新格式化它&仍然做同样的事情

它正在做什么的一个例子:

您每次都要创建一个新标签,并将其置于旧标签之上。在类范围内的某个地方声明标签(更具描述性的名称也不错)。然后,在您的方法中,只调用lbl.setText(txt)。这将使用更新的文本更新预先存在的标签

它应该是这样的:

public class yourGUI {
    private JLabel progressLabel;

    public static void main(String[] args) {
       progressLabel = new JLabel();
       progressLabel.setBounds(137, 11, 200, 14);
       frame.getContentPane().add(progressLabel);
    }

    public static void displayText(int Stage) {
        String txt = "";
        if (Stage == 1) {
            txt = "Checking Cache...";
        } else if (Stage == 2) {
            txt = "Downloading Cache...";
        } else if (Stage == 3) {
            txt = "Cache Download Complete!";
        } else if (Stage == 4) {
            txt = "Unpacking Files...";
        } else {  //assuming (Stage == 5), this is up to your discretion 
            txt = "Launching Client!";
        }
        progressLabel.setText(txt);
    }
}    

此外,无需每次检查每个if语句。

您每次都在创建一个新标签,并将其置于旧标签之上。在类范围内的某个地方声明标签(更具描述性的名称也不错)。然后,在您的方法中,只调用lbl.setText(txt)。这将使用更新的文本更新预先存在的标签

它应该是这样的:

public class yourGUI {
    private JLabel progressLabel;

    public static void main(String[] args) {
       progressLabel = new JLabel();
       progressLabel.setBounds(137, 11, 200, 14);
       frame.getContentPane().add(progressLabel);
    }

    public static void displayText(int Stage) {
        String txt = "";
        if (Stage == 1) {
            txt = "Checking Cache...";
        } else if (Stage == 2) {
            txt = "Downloading Cache...";
        } else if (Stage == 3) {
            txt = "Cache Download Complete!";
        } else if (Stage == 4) {
            txt = "Unpacking Files...";
        } else {  //assuming (Stage == 5), this is up to your discretion 
            txt = "Launching Client!";
        }
        progressLabel.setText(txt);
    }
}    

此外,无需每次检查每个if语句。

请显示其余代码。另外,为什么要为每次调用创建一个新标签?只需删除
lbl=new JLabel()
您不必每次都创建一个新的
JLabel
。请显示其余的代码。另外,为什么要为每次调用创建一个新标签?只需删除
lbl=new JLabel()
您不必每次都创建一个新的
JLabel
。嘿,谢谢。作为if而不是else,如果我只是在尝试一些东西&忘了把它换回来。嘿,谢谢。至于if,而不是else,如果我只是在尝试一些东西&忘了把它改回来。