2013-05-09 2 views
1

JLayeredPane을 사용하여 JFrame의 컨트롤 (JPanelJLabel)에 추가하려고합니다.아이콘이있는 JPanel 및 JLabel이있는 JLayeredPane

레이블에 ImageIcon의 도움으로 배경 이미지가 있고 패널에 버튼 컨트롤이 있습니다. 배경 이미지가있는 jlabel을 보여줍니다.

하지만 패널 컨트롤이 표시되지 않습니다. 다음 코드를 사용하고 있습니다.

try 
    { 
    JLayeredPane layers= new JLayeredPane(); 
    ImageIcon img1= ImageIcon("path upto image"); 
    JLabel l1= new JLabel(""); 
    l1.setIcon(img1); 


    JPanel panel1 = new JPanel(); 

    layers.add(l1); 
    layers.add(panel1); 

    add(layers); 
} 
catch(Exception ex){ex.printStackTrace();} 

패널 컨트롤을 표시하는 방법은 무엇입니까?

+0

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) 코드 블록에 일관되고 논리적 인 들여 쓰기를 사용하십시오. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다. –

+1

JLayeredPane에서는 항목이 레이어의 z 위치와 함께 정렬됩니다. 간단한 add 메소드 대신 layers.add (child, layer)를 사용하는 것이 좋습니다. 자세한 내용은 [The Documentation] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JLayeredPane.html)을 참조하십시오. –

답변

1

기본적으로 구성 요소에는 위치 또는 크기가 없으므로 레이아웃 관리자가없는 컨테이너 (예 : JLayeredPane)에 컨테이너를 추가하면 해당 구성 요소가 나타나지 않습니다.

JLayeredPane에는 레이아웃 관리자가 없기 때문에 위치 및 크기 정보를 구성 요소에 제공해야합니다.

setSize, setLocation 및/또는 setBounds을 사용해보세요.

자세한 내용은 How to use layered panes의 예를 참조하십시오.

+0

* "사용해보십시오 .."* ..a 레이아웃 관리자! 기본적으로 하나가 없기 때문에 하나만 설정할 수있는 것은 아닙니다. –

+0

@AndrewThompson LOL ... 사실, 컨텍스트가 좋을 것입니다. – MadProgrammer

+0

@AndrewThompson 내 (작은) 마음에, 'JLayeredPane'은 물건을 드래그하는 데 적합하지만 그게 바로 ... – MadProgrammer