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

Java与布局

Java与布局,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,我想在创建网页时,自上而下使用类似于容器的jpanel,就像DIV标记一样?如果我使用BorderLayout,我只能有两个(北和南) 我想将不同的jbutton、jlabel和JTextFields放入每个jpanel中。这是我正在尝试的布局: Container1及其内容 Container2及其内容 Container3及其内容 谢谢你的帮助 编辑:我添加了部分代码,因为我不确定我是否做对了 JPanel container1, container2, container3; contai

我想在创建网页时,自上而下使用类似于容器的jpanel,就像DIV标记一样?如果我使用BorderLayout,我只能有两个(北和南)

我想将不同的
jbutton
jlabel
JTextFields
放入每个jpanel中。这是我正在尝试的布局:

Container1及其内容

Container2及其内容

Container3及其内容

谢谢你的帮助

编辑:我添加了部分代码,因为我不确定我是否做对了

JPanel container1, container2, container3;
container1 = new JPanel();
container2 = new JPanel();
container3 = new JPanel();

container1.setLayout(new BoxLayout(container1, BoxLayout.Y_AXIS));
container2.setLayout(new BoxLayout(container2, BoxLayout.Y_AXIS));
container3.setLayout(new BoxLayout(container3, BoxLayout.Y_AXIS));

// lägg till komponenter till containers
container1.add(button1);
container2.add(button2);
container3.add(button3);

// lägg till containers till fönster
frame.add(container1);
frame.add(container2);
frame.add(container3);
当您将列数设置为1时,可以使用进行此操作。
还有,当您使用页面布局或Y轴方向时,应该会产生这种效果

以下是BoxLayout的一些示例代码:

Container container = frame.getContentPane( );
frame.setLayout( new BoxLayout( container, BoxLayout.Y_AXIS ) );

JPanel panel1 = new JPanel( );
panel1.add( new JButton( "Button #1" ) );
frame.add( panel1 );

JPanel panel2 = new JPanel( );
panel2.add( new JLabel("Label #1") );
frame.add( panel2 );

请注意,布局是在框架的内容窗格上设置的,而不是直接在框架上设置的。如果您试图直接在JFrame上设置BoxLayout,将出现“BoxLayout无法共享”错误。

听起来您需要使用布局管理器。这种特殊的布局管理器使垂直堆叠组件变得非常容易。

网页元素的行为与
FlowLayout
的作用非常相似:在一行中显示所有内容(水平或垂直),如果没有足够的空间,则溢出到多行中。如果希望固定排列,请使用
BoxLayout


但请注意,如果嵌套布局管理器,事情可能会变得更棘手。这是一个。

BoxLayout听起来很有趣,但是JPanel会覆盖所有空间吗?如果我使用背景色,它会覆盖盒子中的每个空间吗?我正在尝试代码,但遇到了一些问题!我不应该在开始时使用它:frame.setLayout(newborderlayout());我是否应该这样放置框:container1.setLayout(newboxlayout(container1,BoxLayout.Y_轴));container2.setLayout(新的BoxLayout(container2,BoxLayout.Y_轴));我之间有很多空间。一个按钮在顶部,另一个按钮在底部!?我可以为盒子或面板设置一些尺寸吗?Container1和container2是的实例JPanel@3D-Krativ请在问题中编辑代码作为更新。@3D Krativ无需设置边界布局;我已经更新了我的答案来反映这一点。嗯,我需要使用容器类和getContentPane吗?我想这在第5版之后就没有必要了?