我如何继续使标签(图片)'可拖动'。所以,基本上要做到这一点,我可以点击jlabel图片,并将其移动到jframe并放下它。我一直在寻找,但这对我没有帮助,所以我想知道你们中是否有人知道如何让它发挥作用?
package src;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/*
* @Author - 0x29A
*
*
*/
public class Jframe {
public static void main(final String args[]) {
/*
* @Images
*/
final ImageIcon icon = new ImageIcon("Data/button.png");
final JLabel label = new JLabel(icon);
final ImageIcon icon1 = new ImageIcon("Data/button1.png");
final JLabel label1 = new JLabel(icon1);
final ImageIcon icon2 = new ImageIcon("Data/button2.png");
final JLabel label2 = new JLabel(icon2);
final ImageIcon icon3 = new ImageIcon("Data/button3.png");
final JLabel label3 = new JLabel(icon3);
final ImageIcon icon4 = new ImageIcon("Data/button4.png");
final JLabel label4 = new JLabel(icon4);
final ImageIcon icon5 = new ImageIcon("Data/button5.png");
final JLabel label5 = new JLabel(icon5);
final ImageIcon icon6 = new ImageIcon("Data/background.png");
final JLabel label6 = new JLabel(icon6);
/*
* @Image Location
*/
label.setBounds(282, 255, 96, 96);
label1.setBounds(384, 255, 96, 96);
label2.setBounds(282, 153, 96, 96);
label3.setBounds(384, 153, 198, 96);
label4.setBounds(181, 152, 96, 96);
label5.setBounds(181, 255, 96, 96);
label6.setBounds(0, 0, 765, 503);
/*
* @Frame
*/
final JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(765, 503));
frame.setLayout(null);
frame.add(label);
frame.add(label1);
frame.add(label2);
frame.add(label3);
frame.add(label4);
frame.add(label5);
frame.add(label6);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
答案 0 :(得分:1)
归结为许多要求。主要是“谁负责管理”。您可以实现它,以便每个标签负责它自己的布局管理或容器负责。
每个人都有自己的优点。我更喜欢容器管理方法,因为它不能锁定你只能使用标签。
您希望自己熟悉MouseMotionListener和MouseListener。
基本思路是监控点击发生的时间(以及点击的内容)并使用点击点确定拖动鼠标时的偏移量。
抱歉,花了我一些时间才找到,但我回答了一个可能有用的问题Object on Image does not move when Image moves。
它不完全相同,但它包含可能有用的概念。