Java 将特定JPanel子级设置为忽略布局管理器

Java 将特定JPanel子级设置为忽略布局管理器,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我正在制作一个简单的GUI,其中GridBag布局管理器下有多个JPanel。问题是我想通过在GridBag布局中的子JPanel下移动来添加拖放功能,但不管出于什么原因,setLocation()似乎不起作用。我怀疑布局管理器正在干预这一点。我不想完全取出布局管理器,因为我需要它来帮助组织元素,那么有没有办法设置一些特定的元素来忽略布局管理器?只需在GridBag布局中添加一个带有透明背景的新jPanel(如果默认情况下不透明,请使用setOpaque(false)),并将其布局设置为空: m

我正在制作一个简单的GUI,其中GridBag布局管理器下有多个JPanel。问题是我想通过在GridBag布局中的子JPanel下移动来添加拖放功能,但不管出于什么原因,setLocation()似乎不起作用。我怀疑布局管理器正在干预这一点。我不想完全取出布局管理器,因为我需要它来帮助组织元素,那么有没有办法设置一些特定的元素来忽略布局管理器?

只需在GridBag布局中添加一个带有透明背景的新jPanel(如果默认情况下不透明,请使用
setOpaque(false)
),并将其布局设置为空:

myPanel.setLayout(null);
另外,将其大小设置为适当的值,因为默认情况下,空布局会在没有坐标的情况下收缩为零

myPanel.setMinSize(int x, int y);

添加到叠加jPanel的任何组件都不会受到布局的影响,并且可以自由移动。

您是否考虑过显示面板的
JList
?实现拖放列表条目重新排序相对容易。布局管理器用于面板,组件遵循布局管理器的规则。如果希望组件可拖动,则需要使用空布局将组件添加到单独的面板。