2013-10-12 21 views
0

Class1的的Java的JFrame/JButton的/盒 - 无按钮出现

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

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没有布局。为什么不显示按钮?

回答

1

您正在使用空白布局和绝对定位拍摄自己的脚。

  • 你给你的JFrame空布局
  • ,然后将组件添加到它没有指定其大小或位置(盒),所以它会有大小(0,0)。
  • 取而代之避免使用空布局
  • 学习和使用布局管理器,因为它们将帮助您轻松地创建良好平衡的GUI。

更好地描述你想要达到的结构我想。另外,我会避免创建扩展集合的类,如ArrayList。相反,在这种情况下,通过组合而不是继承来增强要好得多。