2011-01-20 6 views
8

다른 JPanel에 문제가 있습니다. 이유는 모르겠지만 그 결과는 단순한 사각형이지만 치수가 정확하지 않습니다. 왜 그런가요?JPanel inside another

import java.awt.Color; 
import java.awt.Container; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class jj extends JFrame { 

    private JPanel painel3; 
    private JPanel painel5; 
    private Container container; 

    public jj() { 

     container = getContentPane(); 
     container.setLayout(null); 

     painel5 = new JPanel(); 
     painel5.setBackground(Color.red); 
     painel5.setBounds(120, 110, 100, 120); 
     painel3 = new JPanel(); 
     painel3.setBackground(Color.white); 
     painel3.add(painel5); 
     painel3.setBounds(50, 50, 290, 220); 

     container.add(painel3); 

     // frame 
     setSize(1000, 900); 
     setLocation(200, 50); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 

    public static void main(String[] args) { 
     new jj(); 
    } 
} 

답변

5

은 또한 그렇지 않으면 기본 FlowLayout를 사용하는 null로 패널 3의 레이아웃을 설정해야합니다

더 나은하지만 panel3.setLayout(null);

+1

코드를 테스트했을 때'painel3.setlayout (null); '을 추가했습니다. – Puddingfox

2

는 널 (null) 레이아웃 사용 및 setBounds /에는 setSize 아니라을 방지하는 것입니다 레이아웃 관리자가 GUI 레이아웃을 도와줍니다. 여기에서 내용을 읽을 수 있습니다. Laying out components in a container

3

두 가지 추가 권장 사항. LayoutManager를 사용하는 법을 배웁니다. 그들은 약간의 학습 곡선을 가지고 있을지 모르나 그럴만 한 가치가있을 것입니다. 좋은 자습서 : http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

또한 Java 표준에 따라 클래스 이름은 대문자로 시작해야합니다. 이렇게하면 다른 사람들이 코드를 더 잘 읽을 수 있습니다.

+1

+1 LayoutManager를 사용하는 것이 좋습니다. – Jonas

+0

내 레이아웃을 gridlayout으로 변경했습니다. – anvd

+0

@Fel 우수합니다. – jzd

0

painel5 패널을 추가하기 전에 painel3의 레이아웃을 null로 설정하십시오.

painel3.setLayout (null); painel3.add (painel5);

레이아웃 관리자를 사용하는 것이 좋습니다.