getComponents()的取值

java里getComponents().length的返回值为什么总为1。这个返回值是怎么算的?
以下dialog,jFrame两个组件的输出都是1

JFrame jFrame=new JFrame();
        JButton btn1=new JButton("模态对话框");
        JButton btn2=new JButton("非模态对话框");
        jFrame.add(btn1);
        jFrame.add(btn2);
        jFrame.setSize(300,300);
        jFrame.setLocation(300,300);
        jFrame.setLayout(new FlowLayout());
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口可关闭
        jFrame.setVisible(true);
        final JDialog dialog=new JDialog(jFrame,"Dialog");
        final JLabel label=new JLabel();
        final JButton btn3=new JButton("确定");
        dialog.add(btn3);

        final JLabel label1=new JLabel();
        dialog.add(label1);
        label1.setText("test");

        dialog.setSize(220,150); //对话框大小
        dialog.setLocation(350,350);
        dialog.setLayout(new FlowLayout());
        System.out.println(dialog.getComponents().length);
        System.out.println(jFrame.getComponents().length);