使用SwingWorker的Java - 按下按钮后GUI冻结(ProgressBar也不工作)

时间:2016-10-30 04:53:40

标签: java swing swingworker jprogressbar

我的程序的主要思想是从文件解析XML数据并使用JDBC驱动程序将其插入MySQL数据库。文件包含2000个元素,一切都很完美 - 文件被解析并且数据被加载到数据库。问题是,当我按下按钮启动它时,所有GUI冻结并且JProgressBarr不能按预期工作。我不知道为什么。我使用SwingWorker进行线程工作。这是我的代码:

sed -r 's/^ *[|] *([0-9]+[.][0-9]+[.][0-9]+[.][0-9]+):[0-9]{3}.*/\1/

2 个答案:

答案 0 :(得分:4)

改变这个:

navbar-right

..对此..

new LoadXmlToDatabase().run();

答案 1 :(得分:-2)

GUI中的GUI冻结主要是由于线程问题,在这种情况下我猜它是因为当单击或按下按钮时。尝试为按钮提供单独的线程。尝试此解决方案。

let
    record = [
        field1 = "value1",
        field2 = "value2",
        field3 = [
            sub_field_3_1 = {"value_3_1_1", "value_3_1_2", "value_3_1_1"},
            sub_field_3_2 = {"value_3_2_1", "value_3_2_2", "value_3_2_1"}
        ]
    ],
    content = Json.FromValue(record),
    web=Web.Contents("https://my_url", [
        Headers = [#"Content-Type"="text/xml; charset=utf-8"],
        Content = content
    ])
in
    web