2014-10-20 2 views
-2

질문으로, 나는 빈 JPanel을 어떻게 참조 할 수 있는지 알고 싶다. 나는 (비어있는) 3,3에 JPanel을 참조하고 getComponent()가 더 n 번째 구성 요소가 없기 때문에보고, 예외가 발생합니다 원하는이 예에서getComponent()와 같은 메서드로 빈 JPanel을 참조하려면 어떻게해야합니까?

try 
{       
    if(tiles[3][3].getComponent(0) == null) 
    { 
     JOptionPane.showMessageDialog(null, "true"); 
    } 
} 
catch(ArrayIndexOutOfBoundsException e) 
{ 
} 

: 여기에 내 작은 코드입니다. getComponents는 구성 요소가 없기 때문에 작동하지 않습니다. 나는 다음과 같이 시도했다 :

if(tiles[3][3].getComponents == null) 

그리고 여전히 작동하지 않았다.

특히이 문항에서는 if 문에 빈 타일을 사용하여 타일이 비어 있는지 확인할 수 있고 그 다음 타일이 비어 있는지 확인합니다.

+1

'타일 '유형은 무엇입니까? – RealSkeptic

+0

왜 "if (tiles [3] [3] == null) {"? – BarrySW19

+0

@RealSkeptic 타일은 JPanels의 배열입니다. –

답변

1

배열 항목이 null이 될 가능성이있는 경우, 관련된 항목에 액세스하기 전에 배열 항목이 null인지 여부를 확인해야합니다. 따라서 tiles[3][3] == null을 확인하십시오.

null이 아닌 것으로 확인되면 getComponents() 메서드 또는 getComponentCount() 메서드 중 하나를 호출해야합니다.

이들은 요소가 아니라 메소드이므로 중괄호로 호출해야합니다.

getComponents() 메서드는 구성 요소의 배열을 반환하므로 배열의 길이를 확인해야합니다.

getComponentCount()은 JPanel의 구성 요소 수를 나타내는 정수를 반환합니다.

getComponent(N) (단수, 복수가 아님) 메서드는 지정된 인덱스의 구성 요소가 JPanel 내부에 있어야하므로 비어있는 JPanel에서는 작동하지 않습니다.

+0

그게 작동하지 않았다 편집 : 특히, 내가 JPanel의 구성 요소를 확인하고 비어있는 경우 그것을 참조하는 방법을 알아야합니다. 이 예에서는 tiles [3] [3]이 비어 있습니다. if 문 안에서 참조하는 방법을 알아야합니다. –

+0

null을 참조 할 수 없습니다. null의 경우는 거기에 실제의 JPanel가 없다는 것을 의미합니다. – RealSkeptic

+0

그래, 그 질문에 대답하지 않습니다. 나에게 그것을 바꿔 보겠습니다. 어쩌면 질문이 모호하거나 정확하게 말하지 않았을 지 모르겠습니다. 예제에서 시도한 방식으로 JPanel에 예외를 throw하지 않고 JPanel 내부에 구성 요소가 없는지 확인하려면 어떻게해야합니까? 일명 if (JPanel이 비어 있음) –

관련 문제