gpt4 book ai didi

java - 如何在swing中自由布局动态添加按钮等组件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:29 24 4
gpt4 key购买 nike

您好,我是 Java Swing 的新手。我必须动态添加按钮,当我尝试动态添加这些按钮时,当它处于自由布局时,它不会添加到面板。它接受任何一种布局,如 null 布局或 gridbaglayout。

有没有其他方法可以自由布局动态添加组件?

最佳答案

我假设“自由布局”指的是自由设计布局,也称为 Netbeans 开发的 GroupLayout。这种布局背后的基本思想是它在交互式设计和使用 GUI 构建器添加具有简单视觉支持的组件时提供的便利。

GUI 生成器生成支持正确放置组件的必要代码。下面是使用自由设计布局在 JPanel 上放置两个 JButton 的自动生成的代码:

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 217, Short.MAX_VALUE)
.addComponent(jButton2)
.addGap(96, 96, 96))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton1)
.addGap(100, 100, 100)
.addComponent(jButton2)
.addContainerGap(140, Short.MAX_VALUE))
);

如您所见,轻松交互放置的成本会传递到生成的代码中。这使得这种布局不太适合动态组件处理。

另一方面,FlowLayout 或 GridLayout 允许您更好地以编程方式处理动态组件。您也可以始终将 FlowLayout JPanel 添加到 GroupLayout JPanel,以便充分利用这两种布局。

关于java - 如何在swing中自由布局动态添加按钮等组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com