java - 为什么 setVisible 不起作用?

标签 java swing gif layout-manager border-layout

我有一个带边框布局的 swing GUI。在NORTH我添加了一些组件。 我的带有 GIF 图标的标签组件不可见 lblBusy.setVisible(false); 之后,一个按钮使其可见,如下所示。为什么不显示?

btnDownload.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    lblBusy.setVisible(true);
                    btnCancel.setEnabled(true);
                }
            });

            download = new Download(txtSource.getText(), new File(txtDestination.getText()), textAreaStatus);
            download.start();
            lblBusy.setVisible(false);
        }
    });

最佳答案

1) 这是与 EventDispatchThread 相关的问题,EDT 非常保证对 GUI 的所有更改都会立即完成

2) 你从JButton调用了ActionPerformed,直到所有事件结束你的GUI应该被卡住或者不负责任,对于JButtonJLabel 在您的情况下

3) 最好将 File 内容的读取重定向到 Backgroung 任务,例如SwingWorkerRunnable#Thread 然后 JButtonJLabel 将被更改,并且 GUI 将在后台任务期间负责鼠标或键盘

4) 脏黑客 split 为两个单独的 Action ,由 javax.swing.Timer 延迟,但在这种情况下,直到所有事件结束,您的 GUI 将被卡住或不负责任

关于java - 为什么 setVisible 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006075/

相关文章:

java - StAX 和 DOM 使用 XMLEventReader 而不是 XMLStreamReader

java - 下拉菜单未按预期工作

java - 您使用哪个布局管理器?

android - 您无法为已销毁的 Activity 启动加载

javascript - html - 悬停时播放 gif 一次,鼠标移开时反向播放

php - 使用 GIFDecoder.class.php 调整动画 GIF 大小会导致透明度问题

java - 比较 2d int 数组与字符的最佳方法?

java - 如何为restTemplate实现重试机制

java - Swing - 显示空白屏幕的 Java 程序

卡加载时的 Java Swing 卡布局