小编car*_*get的帖子

Java GUI线程

我有一个GUI程序,在这个例子中,使用下载exe wget.我有一个线程设置下载文件.有一个静态变量保存文件的大小.然后我有一个while循环检查实际文件大小并更新a JLabel直到下载完成100%.GUI显然没有更新,一切都停止,直到线程完成,这对我来说很奇怪,因为我认为制作这个线程的目的是绕过这个问题.请让我知道我做错了什么,以及需要更改线程的内容.我想尽量保持这个目前的简单.

仅供参考:我System.out.println()在那里你可以看到它确实正确地更新了当前的文件大小.此外,如果正在下载的文件已经存在(因为while循环立即为真),整个过程将无法工作.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class downloaderProgram implements ActionListener {
    JFrame frame;
    JPanel p1, p2, p3;
    JButton start;
    JLabel status;

    downloaderProgram() {
        frame = new JFrame("Downloader");
        frame.setSize(500, 400);

        //p1
        p1 = new JPanel();

        //p2
        p2 = new JPanel();

        status  = new JLabel("");
        p2.add(status);

        //p3
        GridLayout p3Grid = new GridLayout(0, 1);
        p3 = new JPanel();
        p3.setLayout(p3Grid);

        start = new JButton("Start");
        start.setMargin(new Insets(10,0,10,0));

        p3.add(start);

        //frame
        frame.add(p1, BorderLayout.NORTH);
        frame.add(p2, …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing multithreading

2
推荐指数
1
解决办法
1190
查看次数

标签 统计

java ×1

multithreading ×1

swing ×1

user-interface ×1