스위치 (Component[])
에 (JTabbedPane[])
캐스트. 당신은 getComponents()
방법을 통해 마우스를 올려 놓으면, 당신은 당신이 Component[]
JTabbedPane[]
로 변환 할 경우는 Component[]
를 반환 볼 수 있습니다 당신은 수동으로해야 할뿐만 아니라, 그 길을 따라 실수를 확인해야하고이 가장 효율적인 아니지만
JTabbedPane[] panes = convertComponents(getComponents());
private JTabbedPane[] convertComponents(Component[] comps) {
JTabbedPane[] panes = comps.length > 0? new JTabbedPane[comps.length] : null;
if(panes != null)
for(int i = 0; i < panes.length; i++) {
if(comps[i] instanceof JTabbedPane)
panes[i] = (JTabbedPane) comps[i];
}
return panes;
}
(A JTabbedPane에 []에 추가하기 전에 JTabbedPane에 그것 확인하는) 왜냐하면 각 항목은 getComponents()의 JTabbedPane에는 JTabbedPane 배열에 빈 자리가 있으므로 정리해야합니다.
JTabbedPane[] panes = comps.length > 0? new JTabbedPane[comps.length] : null;
이 먼저 검사 파라미터 통과 컴포넌트 []는 하나 개 이상의 공간을 갖는 경우. 그렇지 않다면 인스턴스로 초기화하지 마십시오.
if(panes != null)
는 프로그래머 때문에 기회
panes
우리가 많이 사용하기 전에 확인
null
로 초기화 할 수
for(int i = 0; i < panes.length-1; i++) {
Component[] comps
및 JTabbedPane[] panes
같은 크기를 가지고 있기 때문에, 그것은 중요하지 않습니다 반복 할 횟수를 아는 한 사용하는 길이입니다. 이것은 내가 "구성 요소가 JTabbedPane
하지 않은 경우, 당신은 당신의 배열에 널 공간이있을 것이다"고 말했다 어디서 무엇을 의미하는 것입니다
if(comps[i] instanceof JTabbedPane)
. 그러면 창 배열에 넣기 전에 JTabbedPane
인지 확인합니다. 그렇지 않으면 완전히 무시되고 panes
의 공백은 null로 남습니다.
루프가 완료되면 방금 만든 배열이 반환됩니다.
전체 스택 추적 및 관련 코드를 스택 추적에 표시 할 수 있습니까? – user3507600
Main_Tabbed_Panel.getComponents()는'JTabbedPane []'이 아니라'Component []'이므로 캐스팅 오류가 발생합니다. –