在panel.setVisible(true)之后JPanel没有显示

时间:2017-08-18 07:08:17

标签: java swing jframe jpanel jsoup

我正在使用桌面应用,我的目标是使用Jsoup.connect()获取指定的网址。 工作正常,但它需要几秒钟,所以我想我会显示一个“加载”的GIF或其他东西,但它不完整。 获取并显示加载JPanel以进行相同的按钮单击。

如果我只想设置我的JPanel按钮点击,可以正常工作(下面的代码)

private void btnRefreshSelectedActionPerformed(ActionEvent e)
{
    panelRefresh.setVisible(true);
}

但是当我添加网址时,我的面板不会显示,但应该看到它持续1-3秒。代码:

private void btnRefreshSelectedActionPerformed(ActionEvent e)
{
    panelRefresh.setVisible(true);
    //SwingUtilities.invokeLater(() -> panelRefresh.setVisible(true)); - still not working

    //do Jsoup.connect and other things (1-3 secs runtime)
    //...

    panelRefresh.setVisible(false);
}

有什么问题?

1 个答案:

答案 0 :(得分:1)

我不熟悉Jsoup API,所以只是猜测,但是......你确定方法Jsoup.connect()是同步的吗?也许它只是在一个单独的线程上启动连接并立即返回,然后另一个线程在建立连接时调用一些处理程序?

在这种情况下,您的JPanel可见性会在true后立即切换为false,因此在实践中您根本看不到它。如果是这种情况,那么您应该更改连接建立时调用的处理程序的可见性,而不是btnRefreshSelectedActionPerformed方法。