0

第一类

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);
    }
}

2 类

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 中。为什么按钮没有出现?

4

1 回答 1

1

通过使用空布局和绝对定位,您正在为自己开枪。

  • 你给你的 JFrame 一个空布局
  • 然后在不指定其大小或位置(盒子)的情况下向其中添加一个组件,因此它的大小为 (0, 0)。
  • 而是避免使用空布局
  • 学习和使用布局管理器,因为它们将帮助您轻松创建平衡良好的 GUI。

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

于 2013-10-12T21:06:43.940 回答