java - 创建进度条 - 刷新 JDialog

标签 java swing refresh repaint jdialog

我正在尝试用 Java 实现一个进度 JDialog。我正在解析文件,我希望 JDialog 在我开始解析新文件后刷新。我的问题是 JDialog 没有刷新。我试过重新粉刷它,或者调整它的大小,所以它会重新粉刷。我也试过删除标签,然后添加一个新标签。

ProgressDialog 类:

public class ProgressDialog extends javax.swing.JDialog {
    private JLabel jLabel1;

    public ProgressDialog(Window frame) {
        super(frame);
        this.setResizable(false);
        this.setLocationRelativeTo(frame);
        initGUI();
        //this.setVisible(true);

    }

    private void initGUI() {
        try {
            {
                setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
                getContentPane().setLayout(null);
                {
                    jLabel1 = new JLabel();
                    getContentPane().add(jLabel1);
                    jLabel1.setText("In Progress..");
                    jLabel1.setBounds(12, 12, 215, 52);
                    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
                }
            }
            this.setSize(255, 114);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setText(String s){
        this.setVisible(true);
        jLabel1.setText(s);
        this.resize(this.getSize());
        this.repaint();
    }
}

我如何使用它:

ProgressDialog pd = new ProgressDialog(frame);
for(File file:files){
    pd.setText("Parsing " + file + ".");

    ...

}

最佳答案

您应该在工作线程上执行文件解析,并在 Event Dispath 线程上更新您的进度对话框。一些值得阅读的链接:

关于java - 创建进度条 - 刷新 JDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295749/

相关文章:

java - 如何减少在 Android 上发布从服务器获取的数据的延迟?

java - 仅将 JButton 添加到 JTable 中的某些行和列

java - 当我在 JPanel 上绘制背景图像时,它在 Windows 下的行为与在 Linux 下的行为不同

java - 在控制台中监控 google app engine cron 作业?

java - 如何用Java中的Weka获取聚集记录的值?

java - 如何编译和运行相互依赖的插件 jar

java - 使用java 1.8构建maven项目但使用java 1.7运行它

java - 使JOptionPane消息对话框渲染后消失

javafx treetableview 单元格值未更新

Javascript JQuery Listview 刷新错误消息 - 未捕获的 TypeError : undefined is not a function