2013-10-12 2 views
0

클래스 1자바 JFrame의 /하는 JButton/박스 -

public class components extends ArrayList<Component>{ 
    public components(){ 
     JButton b = new JButton("Quit"); 
     b.setBounds(10, 10, 200, 200); 
     b.setVisible(true); 
     this.add(b); 
    } 
} 

JButton에이 레이아웃없이 JFrame의에 추가 상자에 추가해야

public class mainclass extends JFrame{ 
    public static void main(String[] args){ 
     JFrame jf = new mainclass(); 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jf.setVisible(true); 
     jf.setSize(new Dimension(720, 480)); 
     jf.getContentPane().setLayout(null); 
    } 
    public mainclass(){ 
     components c = new components(); 
     Box b = new Box(BoxLayout.Y_AXIS); 
     for(int i = 0; i < c.size(); i++){ 
      System.out.println(c.get(i).getWidth()); 
      b.add(c.get(i)); 
     } 
     getContentPane().add(b); 
    } 
} 

에 Class2 나타나는 어떤 버튼을 누릅니다. 왜 버튼이 나타나지 않습니까?

답변

1

널 레이아웃과 절대 위치 지정을 사용하여 발을 발로 차고 있습니다.

  • 당신은 당신의 JFrame의에 null의 레이아웃
  • 을 제공하고 그 크기 나 위치 (박스)를 지정하지 않고에 구성 요소를 추가하고, 그래서 크기가됩니다 (0, 0).
  • 대신 null 레이아웃을 사용하지 마십시오
  • 잘 균형 잡힌 GUI를 쉽게 만들 수 있도록 레이아웃 관리자를 익히고 사용하십시오.

달성하려는 구조를 설명하는 것이 좋습니다. 또한 ArrayList와 같은 컬렉션을 확장하는 클래스를 만드는 것을 피할 수 있습니다. 대신이 경우 상속이 아니라 구성으로 향상시키는 것이 훨씬 좋습니다.