Java 为什么';进度条上没有进度吗?

Java 为什么';进度条上没有进度吗?,java,Java,调用下面的函数来移动进度条,但我不知道为什么在其他进程启动之前它不会移动 private void startProgressBar() { signInProgressBar.setMinimum(0); signInProgressBar.setMaximum(10); Runnable r = new Runnable() { @Override public void run() { int p = 1;

调用下面的函数来移动进度条,但我不知道为什么在其他进程启动之前它不会移动

private void startProgressBar() {
    signInProgressBar.setMinimum(0);
    signInProgressBar.setMaximum(10);
    Runnable r = new Runnable() {
        @Override
        public void run() {
            int p = 1;
            while(!loginCompleted) {
                signInProgressBar.setValue(p);
                //System.out.println(p);
                p++;
                try {Thread.sleep(5000);}catch(Exception exc) {}
            }                    
        }
    };
    new Thread(r,"progress_bar_thread").start();
}
调用
startProgressBar
的代码段:

        startProgressBar(); // CALL
        String username = usernameTextField.getText();
        String password = new String(passwordField.getPassword());
        Openfire server = new Openfire();
        boolean isConnected = server.connect(username,password);
        if(isConnected) {
            // Stash the username and password
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);

            // Stop the progress bar
            loginCompleted = true;

            // Display the next window
            UserGUI blab = new UserGUI();
            blab.setVisible(true);
            this.dispose(); // Dispose off the login window
        }

可能是什么问题?

您可能需要
重新绘制
无效

试一试


以及为什么要为
signInProgressBar.setValue设置always 5

您可能需要
重新绘制
无效

试一试


为什么您总是为
登录进度条设置5。设置值

您的代码似乎根本不会调整进度条:

signInProgressBar.setValue(5);  // <-- in your while loop

signInProgressBar.setValue(5);// 您的代码似乎根本无法调整进度条:

signInProgressBar.setValue(5);  // <-- in your while loop
signInProgressBar.setValue(5);//
您犯了一个小错误,即signInProgressBar.setValue(5);应为IgnitnProgressBar.setValue(p)

启动时的当前代码将生成一个空条,然后IMMIDEATLY将其设置为50%,在登录完成后没有任何语句对其进行处理

您犯了一个小错误,即signInProgressBar.setValue(5);应为IgnitnProgressBar.setValue(p)

启动时的当前代码将生成一个空条,然后IMMIDEATLY将其设置为50%,在登录完成后,没有任何语句对其进行处理。

所有这些内容:

    Openfire server = new Openfire();
    boolean isConnected = server.connect(username,password);
    if(isConnected) {
        // Stash the username and password
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        // Stop the progress bar
        loginCompleted = true;
        // ....
。。。应该在后台线程上完成,特别是连接服务器并与服务器交互,否则将绑定Swing事件线程和整个GUI。还可以为后台线程使用SwingWorker,只需设置其值,JProgressBar就可以通过PropertyChangeListener轻松遵循该值。

所有这些内容:

    Openfire server = new Openfire();
    boolean isConnected = server.connect(username,password);
    if(isConnected) {
        // Stash the username and password
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        // Stop the progress bar
        loginCompleted = true;
        // ....

。。。应该在后台线程上完成,特别是连接服务器并与服务器交互,否则将绑定Swing事件线程和整个GUI。也可以在后台线程中使用SwingWorker,只需设置其值,JProgressBar可以通过PropertyChangeListener轻松遵循该值。

这可能是Runnable的run方法中的问题符号ProgressBar.setValue(5)吗?这可能是问题符号ProgressBar.setValue(5)在Runnable的run方法中?这种情况永远不需要这样做。当容器添加或删除组件时,而不是调整JProgressBar的值时,这些方法是必需的。这种情况永远不需要这些方法。这些方法是在容器添加或删除组件时需要的,而不是在调整JProgressBar的值时。这是错误的..我删除了将值设置为的语句5@saplingPro我指的是您的
循环中的语句,而
循环中的语句。@Hover very Fair,我错误地键入了“scrollbar”。:-)那是错误的..我删除了将值设置为5@saplingPro我指的是您的
循环中的语句,而
循环中的语句。@Hover very Fair,我错误地键入了“scrollbar”。:-)