我对LayoutManagers还是很陌生,但是我想构建一个包含许多组件的JFrame(布局相当复杂),因此感觉GridBagLayout
是一个不错的选择。
使用GridBagConstraints
添加多个组件时,当我打算切换到“设计”视图时,我会收到一条错误消息(代码可以执行,但是没有任何问题)。如果可能的话,我还是希望保留“设计”视图,因为我仍然没有经验,可以借助该视图更好地了解正在发生的事情。
导致错误消息的简化示例代码:
JSlider slider = new JSlider();
JSlider slider2 = new JSlider();
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
add(slider,gbc);
gbc.gridx = 1;
gbc.gridy = 1;
add(slider2,gbc);
当我切换到“设计”视图时出现错误消息:
父母双亲。
gbc组件多次添加到父组件。
•add(slider,gbc);
•add(slider2,gbc);
它是3年前的this问题的重复,但是唯一的答案是“声明另一个GridBagConstraints变量”。但是,我计划添加很多组件,因此我觉得这不是解决我的问题的好方法。 有没有一种方法可以使用GridBagLayout而不使用多个GridBagContraints var(有没有那么繁琐的方法?)并且仍然能够看到Design视图?