Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两个JPanel之间拖动Jlabel图像_Java_Swing_User Interface_Drag And Drop_Jpanel - Fatal编程技术网

Java 在两个JPanel之间拖动Jlabel图像

Java 在两个JPanel之间拖动Jlabel图像,java,swing,user-interface,drag-and-drop,jpanel,Java,Swing,User Interface,Drag And Drop,Jpanel,为了更好地理解我们希望程序如何运行,这里列出了我们目前所拥有的: 1个JPanel,其背景楼层平面图像用作 用户将在其上放置对象的“白板” 1个JPanel,用于保存所有按钮和控件的功能 “白板”面板中的选定对象 1个JPanel,放置在JScrollPanel中,该面板包含 jLabel,图像将放置在“白板”面板上 存储每种类型对象的所有属性的对象类 可放置的家具项目;例如x/y跳线、图像位置、, 价格、人工成本等 我们希望发生以下情况: 用户在滚动列表面板中的JLabel上“按住鼠标”(

为了更好地理解我们希望程序如何运行,这里列出了我们目前所拥有的:

  • 1个JPanel,其背景楼层平面图像用作 用户将在其上放置对象的“白板”

  • 1个JPanel,用于保存所有按钮和控件的功能 “白板”面板中的选定对象

  • 1个JPanel,放置在JScrollPanel中,该面板包含 jLabel,图像将放置在“白板”面板上

  • 存储每种类型对象的所有属性的对象类 可放置的家具项目;例如x/y跳线、图像位置、, 价格、人工成本等

我们希望发生以下情况:

  • 用户在滚动列表面板中的JLabel上“按住鼠标”(我假设JLables也需要以某种方式进行选择)
  • 然后,事件采用JLabel的名称
  • 基于名称实例化item类的对象
  • 将该对象添加到“白板”面板中的项目数组中
  • 然后根据对象属性中的位置加载不同图像的副本
  • 然后将该图像附加到鼠标光标
  • 只要用户按住鼠标按钮,图像就会保持附着状态
  • 如果用户随后在“白板”面板区域内释放鼠标按钮,将触发一个事件,将对象的位置设置为鼠标光标的坐标
  • 如果在其他任何位置释放鼠标,光标将返回默认的windows,JLabel将保持选中状态
  • 我不知道设置一个鼠标侦听器,将图像绑定到鼠标上,然后将其副本放在白板上单击的任何位置是否更简单

    以下是到目前为止创建的图像的链接:


    任何提示或想法都将不胜感激

    我不得不说使用
    JToolBar
    。我这样说是因为它有内置的拖放功能。如果需要,可以使用鼠标侦听器和
    java2d
    手动执行此操作。只需将
    JLabel
    图像放入
    JToolBar
    中即可。祝你好运

    考虑使用Swing的拖放功能,因为它可以很好地为您工作。你想使用drag'n'drop API吗?它非常强大,但有一个小缺点(视觉反馈),还是你自己使用,尽可能使用玻璃面板之类的东西-检查两个答案