0

我的代码无法显示最初具有 setVisible(false) 的所需 JPanel,但是当执行某些操作时,它的可见性然后设置为 true,但它不会显示在屏幕上。

即使我最初将 setVisible 设置为 true,它也不会显示。我在这里附上了 PasteBin 上的代码

有 2 个分层窗格,一个是 jLayeredPane1,另一个是 jLayeredPane2。现在,在 JLayeredPane1 中有两个 JPanel,recordingPanel 和 reRecordingPanel。

最初,当加载小程序时,recordingPanel 的可见性为 setVisible(false)。当第一轮录制完成时,它变得可见,并且可见的recordingPanel 现在变得不可见。这工作正常。

我的问题是我想在另一个 JLayeredPanel 上做同样的事情,其中​​包含 timerPanel 和 listenerPanel。

这是问题所在:timerPanel 的可见性最初是正确的,但是当用户按下 Listen 按钮时,它应该是不可见的,而侦听面板应该是可见的,但事实并非如此!

尽管我已将其可见性设置为 true,但我看不到正在听的播放器。正如我之前所说,即使我最初将其可见性设置为 true,它也不会显示。

我做错了什么 ?

它与比赛条件有关吗?

问题出在这段代码片段中

if (getCurrentState() == RecorderUI.LISTENING_STATE) {

            // switch panel
            this.timerPanel.setVisible(true);
            this.listeningPanel.setVisible(false);

            // switch button
            this.reRecordingButton.setEnabled(true);
            this.saveButton.setEnabled(true);

            this.listenButton.setText("Listen");

            this.setCurrentState(NORMAL_STATE);

            // according to player's state wise
            this.closePlayer();

            log.info(" player closed ");

        } else {

            // switch panel
            this.timerPanel.setVisible(false);
            this.listeningPanel.setVisible(true);

            log.info(" visibility of listeningPanel is "
                    + this.listeningPanel.isVisible());

            // switch button
            this.reRecordingButton.setEnabled(false);
            this.saveButton.setEnabled(false);

            this.listenButton.setText("Close");

            this.setCurrentState(LISTENING_STATE);

            this.startPlayer();

            log.info(" now playing ");
        }

    }
4

1 回答 1

0

在调试时,我发现 matisse 已将 jPanel (listeningPanel) 的高度和宽度设置为 -1,-1,这就是它没有显示在屏幕上的原因。我已经通过手动设置解决了它

谢谢你们

于 2012-09-04T11:49:40.093 回答