처음에는 setVisible (false)으로 설정 한 원하는 JPanel을 내 코드에 표시 할 수 없지만 일부 동작이 수행되면 가시성이 true로 설정되지만 화면에 표시되지 않습니다.jLayeredPane 내에서 Jpanel의 가시성 문제
setVisible을 true로 설정하더라도 초기에는 표시되지 않습니다. PasteBin에 코드를 첨부했습니다.
2 개의 레이어가있는 창 하나는 jLayeredPane1이고 다른 하나는 jLayeredPane2입니다. 이제 JLayeredPane1에는 recordingPanel과 reRecordingPanel이라는 두 개의 JPanel이 있습니다.
처음에 애플릿이로드 될 때 reRecordingPanel의 가시성은 setVisible (false)입니다. 녹음의 첫 번째 라운드가 완료되면 표시되고 visible 인 recordingPanel이 이제 보이지 않게됩니다. 이것은 잘 작동합니다.
내 문제는 그 안에 timerPanel 및 listeningPanel 들어있는 다른 JLayeredPanel 동일하게 싶습니다. 여기
문제입니다 : timerPanel의 가시성은 처음 사실이다하지만 사용자의 프레스 버튼을들을 때 그것이 보이지 않는해야 듣기 패널이 표시해야하지만 그렇지 않습니다!
내가 청취자를 볼 수는 없지만 그 사람의 시인성을 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 ");
}
}
'(false)를'대신'timerPanel.setVisible (거짓)'의 this.timerpanel.setVisible? 나는 전에 그것을 본 적이 없다. – Pureferret
@Pureferret'this'는 클래스의 현재 인스턴스를 참조합니다. 어떤 경우에는 클래스 매개 변수를 메소드 매개 변수 (일반적으로 set-method)에서 모호하게하는 데 도움이 될 수 있습니다. 다른 경우에도 사용됩니다 ... –
@GuillaumePolet'this'는 어떻게 작동하는지 알고 있습니다 만'this.somethingElse.someMethod'는'this'에 속한 * public 변수 *'somethingElse'에'someMethod'를 수행한다고 말합니다 (또는이 경우 개인이 될 수 있습니다). 나는 네가이 일을 할 수 있다고 생각하지 않았다. 아마도 아침에 너무 이른 것 같습니다. – Pureferret