让Jlabel(图片)在Jframe周围拖拽?

时间:2012-07-23 22:32:19

标签: java jframe jlabel imageicon

我如何继续使标签(图片)'可拖动'。所以,基本上要做到这一点,我可以点击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);
    }

1 个答案:

答案 0 :(得分:1)

归结为许多要求。主要是“谁负责管理”。您可以实现它,以便每个标签负责它自己的布局管理或容器负责。

每个人都有自己的优点。我更喜欢容器管理方法,因为它不能锁定你只能使用标签。

您希望自己熟悉MouseMotionListenerMouseListener

基本思路是监控点击发生的时间(以及点击的内容)并使用点击点确定拖动鼠标时的偏移量。

更新

抱歉,花了我一些时间才找到,但我回答了一个可能有用的问题Object on Image does not move when Image moves

它不完全相同,但它包含可能有用的概念。