Java 和布局

发布于 2024-12-25 20:36:49 字数 917 浏览 0 评论 0原文

我想在创建网页时像DIV标签一样从上到下使用JPanels像容器一样?如果我使用 BorderLayout,我只能有两个(北和南)?

我想将不同的 JButtonsJLabelsJTextFields 放入每个 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);

I want to use JPanels like containers from top to bottom just like DIV tags when creating a web page? If I use BorderLayout, I can have only two (NORTH and SOUTH)?

I want to place different JButtons, JLabels and JTextFields into each JPanels. This is the layout I'm trying to do:

Container1 and it's content

Container2 and it's content

Container3 and it's content

Thanks for help.

EDIT: I added some part of my code beacuse I'm not sure I'm doing it right?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

物价感观 2025-01-01 20:36:49

听起来你想要 BoxLayout布局管理器。这个特殊的布局管理器使垂直堆叠组件变得非常容易。

Sounds like you want the BoxLayout layout manager. This particular layout manager makes vertically stacking components quite easy.

赢得她心 2025-01-01 20:36:49

您可以使用 GridLayout 来实现此目的,当您将列数设置为 1。
还有 BoxLayout,它应该给出当您使用 PAGE_LAYOUT 或 Y_AXIS 方向时会出现此效果。

以下是 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 无法共享”错误。

You can use the GridLayout for this, when you set the number of columns to 1.
There is also the BoxLayout, which should give this effect when you use the PAGE_LAYOUT or Y_AXIS orientations.

Here is some sample code for 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 );

Note that the layout is set on the content pane of the frame, not on the frame directly. If you try to set the BoxLayout on the JFrame directly, you will get a "BoxLayout can't be shared" error.

扭转时空 2025-01-01 20:36:49

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

但请注意,如果嵌套布局管理器,事情可能会变得有点棘手。这里有一篇文章很好地解释了它

The behaviour of elemts of a webpage is pretty much what FlowLayout does: show everything in a row (horizontal or vertical) and spill over into multiple rows if there is not enough space. If you want the arrangement to be fixed, use BoxLayout.

But note that if you nest layout managers, things can get a bit trickier. Here's an article that explains it well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文