进度条加载不起作用



我尝试在框架中运行进度栏,但它不起作用。我试图在我的第二个Java类中显示可见的,但将可见(true)设置为错误。希望你们可以帮助我解决我的问题/错误

在我的第二个Java类中显示错误:"线程"中的"主"异常 java.lang.error:未解决的汇编问题:该方法 对于mgfinancewindow的类型,setVisible(布尔值)不确定。

First java class: mgfinancewindow.java
package mgfinance;
import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class mgfinancewindow {
private JFrame frame;
public JProgressBar progressBar;
public JLabel lblNewLabel;
/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                mgfinancewindow window = new mgfinancewindow();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
/**
 * Create the application.
 */
public mgfinancewindow() {
    initialize();
}
/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame("MG Finances");
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.getContentPane().setLayout(null);
    JPanel panel = new JPanel();
    panel.setBounds(0, 0, 1362, 705);
    frame.getContentPane().add(panel);
    panel.setLayout(null);
    JPanel panel_1 = new JPanel();
    panel_1.setBackground(Color.DARK_GRAY);
    panel_1.setBounds(0, 646, 1362, 59);
    panel.add(panel_1);
    panel_1.setLayout(null);
    lblNewLabel = new JLabel("Loading...");
    lblNewLabel.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 16));
    lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
    lblNewLabel.setForeground(Color.WHITE);
    lblNewLabel.setBounds(1139, 0, 114, 34);
    panel_1.add(lblNewLabel);
    progressBar = new JProgressBar();
    progressBar.setBackground(new Color(0, 51, 51));
    progressBar.setBounds(0, 34, 1362, 14);
    panel_1.add(progressBar);
    JLabel lblMgFinance = new JLabel("MG Finance");
    lblMgFinance.setHorizontalAlignment(SwingConstants.CENTER);
    lblMgFinance.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 16));
    lblMgFinance.setForeground(Color.BLUE);
    lblMgFinance.setBounds(0, 11, 1362, 635);
    panel.add(lblMgFinance);

}
}

第二Java类:progressbar.java

package mgfinance;

public class progress {
public static void main(String[] args) throws InterruptedException{
    mgfinancewindow load = new mgfinancewindow();
    for(int i=0; i<=100; i++){
        Thread.sleep(150);
        load.setvisible(true);
        load.lblNewLabel.setText("Loading..."+ i);
        load.progressBar.setValue(i);
    }
}
}

您的mgfinancewindow类不是支持setVisible()方法本身的JComponent。内部的JFrame具有setVisible方法。

在您编写代码的方式中,要快速解决问题,必须在mgfinancewindow类中的initialize()方法的末尾(最后一个语句)编写frame.setVisible(true);,然后从progress类的main方法中删除load.setvisible(true);

public class progress {
    public static void main(String[] args) throws InterruptedException {
        mgfinancewindow load = new mgfinancewindow();
        for (int i = 0; i <= 100; i++) {
            Thread.sleep(150);
            //load.setvisible(true);
            load.lblNewLabel.setText("Loading..." + i);
            load.progressBar.setValue(i);
        }
    }
}

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;
public class mgfinancewindow {
    private JFrame frame;
    public JProgressBar progressBar;
    public JLabel lblNewLabel;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    mgfinancewindow window = new mgfinancewindow();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    /**
     * Create the application.
     */
    public mgfinancewindow() {
        initialize();
    }
    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame("MG Finances");
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.getContentPane().setLayout(null);
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 1362, 705);
        frame.getContentPane().add(panel);
        panel.setLayout(null);
        JPanel panel_1 = new JPanel();
        panel_1.setBackground(Color.DARK_GRAY);
        panel_1.setBounds(0, 646, 1362, 59);
        panel.add(panel_1);
        panel_1.setLayout(null);
        lblNewLabel = new JLabel("Loading...");
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 16));
        lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
        lblNewLabel.setForeground(Color.WHITE);
        lblNewLabel.setBounds(1139, 0, 114, 34);
        panel_1.add(lblNewLabel);
        progressBar = new JProgressBar();
        progressBar.setBackground(new Color(0, 51, 51));
        progressBar.setBounds(0, 34, 1362, 14);
        panel_1.add(progressBar);
        JLabel lblMgFinance = new JLabel("MG Finance");
        lblMgFinance.setHorizontalAlignment(SwingConstants.CENTER);
        lblMgFinance.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 16));
        lblMgFinance.setForeground(Color.BLUE);
        lblMgFinance.setBounds(0, 11, 1362, 635);
        panel.add(lblMgFinance);
        frame.setVisible(true);
    }
}

但是

当您创建像mgfinancewindow这样的组件时,它在内部创建JFrame时,大多数情况下,最好从JFrame 扩展,然后您可以从中创建一个对象并在其上调用setVisible方法在您的程序左右的主要方法中。最好不要在该组件内调用setVisible,因为在其他类中,有时您想创建和初始化mgfinancewindow,但您不想立即使其可见。

另一个提示

根据 Java编码约定

  1. 您的班级名称必须遵循 Camelcase 样式。
  2. 可变名称必须遵循骆驼壳(低点的第一个字母)样式。

您可能想在这里查看其他Java编码约定。

最新更新