我的代码无法显示最初具有 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 ");
}
}