Java 有没有可能有;“可移动”/&引用;“可拖动的”;JFrame中的JButtons、JTextFields等组件?

Java 有没有可能有;“可移动”/&引用;“可拖动的”;JFrame中的JButtons、JTextFields等组件?,java,user-interface,swing,drag-and-drop,components,Java,User Interface,Swing,Drag And Drop,Components,基本上,我计划在JFrame上放置一些按钮、文本字段、标签等,我希望用户可以用鼠标在JFrame上移动不同的组件 我见过鼠标侦听器、子类JComponent代码、DropSource/DropTarget实现等各种方式,但我不确定哪种是“推荐”方式(我不需要支持在不同的框架/应用程序之间进行“拖放”,这似乎是大多数示例所做的)。使用GlassPane: 它是一个不可见的面板,位于所有其他组件的顶部。您可以将鼠标侦听器附加到它,然后使用SwingUtilities.getDeepTestComp

基本上,我计划在JFrame上放置一些按钮、文本字段、标签等,我希望用户可以用鼠标在JFrame上移动不同的组件

我见过鼠标侦听器、子类JComponent代码、DropSource/DropTarget实现等各种方式,但我不确定哪种是“推荐”方式(我不需要支持在不同的框架/应用程序之间进行“拖放”,这似乎是大多数示例所做的)。

使用GlassPane:

它是一个不可见的面板,位于所有其他组件的顶部。您可以将鼠标侦听器附加到它,然后使用SwingUtilities.getDeepTestComponentAt()确定在玻璃窗格下单击了哪个组件。然后在glasspane上使用鼠标标记的侦听器,并根据鼠标拖动的事件设置组件位置


您需要将容器的布局设置为“null”,以便组件的设置位置能够正常工作。

管理员可以为您做这件事。

我可以第一个欢迎PlutoTheCat stackoverflow.com吗?你好,谢谢你的建议!谢谢你的回答!是否不仅可以移动单个组件,还可以移动由JLabel和JTextField组成的组件。。。为什么不试试呢?这太棒了,@camickr。我希望我能为此付钱给你。:)唯一的问题不在于代码,但这种解决方案似乎带来了多种其他功能需求,如手动调整组件大小和结构化(“捕捉到”)组件放置。