Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将容器放置在网格布局内_Java_User Interface_Gridlayoutmanager - Fatal编程技术网

Java 将容器放置在网格布局内

Java 将容器放置在网格布局内,java,user-interface,gridlayoutmanager,Java,User Interface,Gridlayoutmanager,我对java GUI编程比较陌生,我想使用网格布局,并在网格布局中放置一个容器。我真的不知道怎么做,但以下是我尝试过的,但没有成功: Container pane = getContentPane(); pane.setLayout(new GridLayout(3, 1)); Container inp = getContentPane(); inp.setLayout(new GridLayout(2, 4)); Container out = get

我对java GUI编程比较陌生,我想使用网格布局,并在网格布局中放置一个容器。我真的不知道怎么做,但以下是我尝试过的,但没有成功:

    Container pane = getContentPane();
    pane.setLayout(new GridLayout(3, 1));
    Container inp = getContentPane();
    inp.setLayout(new GridLayout(2, 4));
    Container out = getContentPane();
    out.setLayout(new GridLayout(1, 1));
    Container bottom = getContentPane();
    bottom.setLayout(new GridLayout(1, 2));

    pane.add(inp);
    pane.add(out);
    pane.add(bottom);

    inp.add(cn1);
    inp.add(cnum1);
    inp.add(cn2);
    inp.add(cnum2);
    inp.add(add);
    inp.add(sub);
    inp.add(mul);
    inp.add(div);

    out.add(ans);

    bottom.add(clear);
    bottom.add(exit);

    pane.add(inp);
    pane.add(out);
    pane.add(bottom);

我知道这是错误的,但我希望有人能帮助我。谢谢

您的所有面板都是一样的,它们引用contentPane。组件只能驻留在单个容器中,因此每次将任何面板添加到另一个容器时,它们都会首先从父容器中移除

话虽如此,您应该有一个例外,说明容器不能添加到自身中

相反,你需要做一些更像

Container pane = getContentPane();
pane.setLayout(new GridLayout(3, 1));
Container inp = new JPanel(new GridLayout(2, 4));
Container out = new JPanel(new GridLayout(1, 1));
Container bottom = new JPanel(new GridLayout(1, 2));