文字全部显示一次?

时间:2014-01-06 21:12:35

标签: java swing jlabel

我的更新程序有一些JLabel,除文本外,一切都运行顺畅。

文字全是乱七八糟的&看起来喜欢一下子全部显示。我已经尝试将每个文本设置为自己的标签&设置当方法被调用为不透明时不相关的那些。但我得到了nullpointerexceptions。我也尝试过分层我的JFrame,但是它摆脱了我的JProgrssbar?

这是我的代码:

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);
}

我尝试过以几种不同的方式重新格式化它仍然做同样的事情......

它正在做的事情的一个例子: enter image description here

1 个答案:

答案 0 :(得分:7)

您每次都会创建一个新标签并将其放在旧标签上。在类的范围内的某处声明标签(更具描述性的名称也会很好)。然后,在您的方法中,只调用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语句。