Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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_Border Layout - Fatal编程技术网

Java 添加到框架的两个面板是一个在另一个上面

Java 添加到框架的两个面板是一个在另一个上面,java,border-layout,Java,Border Layout,我试图将JPanels添加到JFrame中,但第二个只是在第一个之上,我似乎不明白为什么或者如何修复它 下面是我尝试添加的UI。 非常感谢 罗特姆 private static void createAndShowGUI(){ JFrame f=新JFrame(“Maman 13-第2部分”); f、 setLayout(新的BorderLayout()); //f、 可设置大小(假); f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Flo

我试图将JPanels添加到JFrame中,但第二个只是在第一个之上,我似乎不明白为什么或者如何修复它

下面是我尝试添加的UI。 非常感谢

罗特姆

private static void createAndShowGUI(){
JFrame f=新JFrame(“Maman 13-第2部分”);
f、 setLayout(新的BorderLayout());
//f、 可设置大小(假);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout alignLeftLayout=新的FlowLayout(FlowLayout.LEFT,5,5);
//第一排
Hashtable Hashtable=新的Hashtable();
LinkedHashMap按钮=新建LinkedHashMap();
添加第一行(按钮);
JPanel firstRow=新键盘行(哈希表、按钮);
firstRow.setLayout(alignLeftLayout);
f、 添加(第一行);
//第二排
按钮=新建LinkedHashMap();
添加第二行(按钮);
JPanel secondRow=新键盘行(哈希表、按钮);
secondRow.setLayout(alignLeftLayout);
f、 添加(第二行);
f、 包装();
f、 setVisible(真);
}

我想你需要像这样做

f.add(firstRow, BorderLayout.WEST)


或者类似的。您没有指定如何使用添加的BorderLayout方案。

尝试使用以下内容替换您的f.add([something]);台词

这应该将第一行面板放在左侧,第二行面板放在右侧

这是因为BorderLayout最多可容纳五个面板,如下所述:

您现有的代码只是将新面板添加到f中,而没有指定它们应该放在哪里。

而不是

f.setLayout(new BorderLayout());
试一试


您不是将两个面板布局位置都设置为
alignLeftLayout
如果我希望行位于另一行之上,该怎么办?我的目的是创建一个键盘视图,其中我有5行,每一行都在另一行之上。我尝试了你所说的,这确实有助于将两行都放在屏幕上。然而,我需要它们是一个在另一个之上。我怎样才能做到?谢谢!!!当然,您应该为GrdDeule<代码> F.StFaySew设置参数(new GrDealSead(2,1);< /CODE >或它可能是1,2。尝试两者。我现在没有编译器:)@ USE357312:也考虑“代码> GRIDFISH(0, 1)< /代码>任意一行的单列网格。@ TraseOd,是的,我忘了提这一点。这些数字表示可以分别放入行和列的最大元素数。0表示无限制。
f.add(secondRow, BorderLayout.EAST)
f.add(firstRow, BorderPanel.LINE_START);
f.add(secondRow, BorderPanel.LINE_END);
f.setLayout(new BorderLayout());
f.setLayout(new GridLayout());