Java JFrame / JButton / Box - 没有按钮出现

时间:2013-10-12 21:02:43

标签: java swing layout jframe jbutton

的Class1

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 个答案:

答案 0 :(得分:1)

您通过使用空布局和绝对定位来拍摄自己的脚。

  • 您为JFrame提供空布局
  • 然后添加一个组件而不指定其大小或位置(Box),因此它将具有大小(0,0)。
  • 而是避免使用空布局
  • 学习和使用布局管理器,因为它们可以帮助您轻松创建平衡的GUI。

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