Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 使用鼠标拖动方法拖动图像_Java_Swing_Applet_Paint_Mouse Listeners - Fatal编程技术网

Java 使用鼠标拖动方法拖动图像

Java 使用鼠标拖动方法拖动图像,java,swing,applet,paint,mouse-listeners,Java,Swing,Applet,Paint,Mouse Listeners,我试图用mouseDragged方法编写一个可以拖动图像的代码,但我目前的代码似乎无法成功地做到这一点。我的目标是确保当我在applet中的每个图像上放置拖动时,它会跟随光标 /* Using drag mouseEvent, all objects in the app can be dragged... */ package finals_two; import java.applet.*; import java.awt.*; import java.awt.event.*; /* 10

我试图用mouseDragged方法编写一个可以拖动图像的代码,但我目前的代码似乎无法成功地做到这一点。我的目标是确保当我在applet中的每个图像上放置拖动时,它会跟随光标

/* Using drag mouseEvent, all objects in the app can be dragged...
 */
package finals_two;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/* 10/16/2015
 * @author michael.pabilona
 */
public class Finals_Two extends Applet implements MouseMotionListener
{
    int hei, wid, xCoordinate, yCoordinate;
    Image leftReceiver1, leftReceiver2, leftReceiver3;
    Image rightReceiver1, rightReceiver2, rightReceiver3;    
    Image leftSpiker, rightSpiker, center, setter;

    public void init()
    {
        hei = getSize().height;
        wid = getSize().width;
        xCoordinate = hei;
        yCoordinate = wid;
        addMouseMotionListener(this);
    }

    public void mouseDragged(MouseEvent e)
    {
        xCoordinate = e.getX();
        yCoordinate = e.getY();
        repaint();
    }

    public void paint(Graphics gr)
    {
        setBackground(Color.white);
        gr.setColor(Color.black);
        //court bound top line
        gr.drawLine(400, 130, 1200, 130);
        //court bound bottom line
        gr.drawLine(200, 530, 1000, 530);
        //court bound left line
        gr.drawLine(400, 130, 200, 530);
        //court bound right line
        gr.drawLine(1000, 530, 1200, 130);
        //net
        gr.drawLine(800, 130, 600, 530);
        gr.drawLine(800, 130, 800, 0);
        gr.drawLine(600, 530, 600, 400);
        //net horizontal lines
        gr.drawLine(800, 0, 600, 400);
        gr.drawLine(800, 10, 600, 410);
        gr.drawLine(800, 20, 600, 420);
        gr.drawLine(800, 30, 600, 430);
        gr.drawLine(800, 40, 600, 440);
        gr.drawLine(800, 50, 600, 450);
        gr.drawLine(800, 60, 600, 460);
        gr.drawLine(800, 70, 600, 470);
        gr.drawLine(800, 80, 600, 480);
        //net vertical lines
        gr.drawLine(795, 5, 795, 90);
        gr.drawLine(790, 20, 790, 100);
        gr.drawLine(785, 30, 785, 110);
        gr.drawLine(780, 40, 780, 120);
        gr.drawLine(775, 50, 775, 130);
        gr.drawLine(770, 60, 770, 140);
        gr.drawLine(765, 70, 765, 150);
        gr.drawLine(760, 80, 760, 160);
        gr.drawLine(755, 90, 755, 170);
        gr.drawLine(750, 100, 750, 180);
        gr.drawLine(745, 110, 745, 190);
        gr.drawLine(740, 120, 740, 200);
        gr.drawLine(735, 130, 735, 210);
        gr.drawLine(730, 140, 730, 220);
        gr.drawLine(725, 150, 725, 230);
        gr.drawLine(720, 160, 720, 240);
        gr.drawLine(715, 170, 715, 250);
        gr.drawLine(710, 180, 710, 260);
        gr.drawLine(705, 190, 705, 270);
        gr.drawLine(700, 200, 700, 280);
        gr.drawLine(695, 210, 695, 290);
        gr.drawLine(690, 220, 690, 300);
        gr.drawLine(685, 230, 685, 310);
        gr.drawLine(680, 240, 680, 320);
        gr.drawLine(675, 250, 675, 330);
        gr.drawLine(670, 260, 670, 340);
        gr.drawLine(665, 270, 665, 350);
        gr.drawLine(660, 280, 660, 360);
        gr.drawLine(655, 290, 655, 370);
        gr.drawLine(650, 300, 650, 380);
        gr.drawLine(645, 310, 645, 390);
        gr.drawLine(640, 320, 640, 400);
        gr.drawLine(635, 330, 635, 410);
        gr.drawLine(630, 340, 630, 420);
        gr.drawLine(625, 350, 625, 430);
        gr.drawLine(620, 360, 620, 440);
        gr.drawLine(615, 370, 615, 450);
        gr.drawLine(610, 380, 610, 460);
        gr.drawLine(605, 390, 605, 470);
        gr.drawLine(600, 390, 600, 480);
        //left mid line
        gr.drawLine(625, 130, 425, 530);
        //right mid line
        gr.drawLine(975, 130, 775, 530);
        //left backend receivers
        leftReceiver1 = getImage(getDocumentBase(),"receiver.jpg");
        gr.drawImage(leftReceiver1, 400, 100, 90, 90, this);
        leftReceiver2 = getImage(getDocumentBase(),"receiver.jpg");
        gr.drawImage(leftReceiver2, 325, 250, 90, 90, this);
        leftReceiver3 = getImage(getDocumentBase(),"server1.jpg");
        gr.drawImage(leftReceiver3, 75, 375, 150, 150, this);      
        //right backend receivers
        rightReceiver1 = getImage(getDocumentBase(),"receiver1.jpg");
        gr.drawImage(rightReceiver1, 1000, 100, 100, 100, this);
        rightReceiver2 = getImage(getDocumentBase(),"receiver1.jpg");
        gr.drawImage(rightReceiver2, 950, 250, 100, 100, this);
        rightReceiver3 = getImage(getDocumentBase(),"receiver1.jpg");
        gr.drawImage(rightReceiver3, 900, 400, 100, 100, this);
        //left front liners
        leftSpiker = getImage(getDocumentBase(),"spiker.jpg");
        gr.drawImage(leftSpiker, 650, 30, 100, 100, this);
        center = getImage(getDocumentBase(),"spiker.jpg");
        gr.drawImage(center,600,150,100,100,this);
        setter = getImage(getDocumentBase(),"setter.jpg");
        gr.drawImage(setter, 500, 300, 150, 150, this);
        //right front liners
        rightSpiker = getImage(getDocumentBase(),"spiker1.jpg");
        gr.drawImage(rightSpiker,650,350,130,130,this);
        center = getImage(getDocumentBase(),"server.jpg");
        gr.drawImage(center,750,150,130,130,this);        
        setter = getImage(getDocumentBase(),"defense1.jpg");
        gr.drawImage(setter,850,90,110,110,this);
    }


    @Override
    public void mouseMoved(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }


}

这是我当前的代码。有人能告诉我我错过了什么或者我做错了什么吗?

为了拖动任何东西,你需要知道一些事情。你需要知道他们在哪里以及他们占据的空间

一旦知道了这一点,就可以监视
mouseDragged
事件并更新它们的位置

导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Image;
导入java.awt.Point;
导入java.awt.Rectangle;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
导入javax.imageio.imageio;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公营拖网船{
公共静态void main(字符串[]args){
新德拉格姆();
}
公共排水沟{
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
私人地图位置;
公共测试窗格(){
位置=新HashMap(25);
试一试{
locations.put(ImageIO.read(getClass().getResource(“/Pony.png”)),新点(0,0));
}捕获(IOEX异常){
例如printStackTrace();
}
MouseAdapter ma=新的MouseAdapter(){
私人图像绘制;
专用点点击偏移;
@凌驾
公共无效鼠标按下(MouseEvent e){
对于(Map.Entry:locations.entrySet()){
Image=entry.getKey();
Point=entry.getValue();
矩形边界=新矩形(
点x,点y,
image.getWidth(TestPane.this)、image.getHeight(TestPane.this));
if(bounds.contains(e.getPoint())){
dragImage=图像;
单击偏移=新点(点.x-e.getPoint().x,点.y-e.getPoint().y);
打破
}
}
}
@凌驾
公共无效MouseEvent(MouseEvent e){
dragImage=null;
单击offset=null;
}
@凌驾
公共无效鼠标标记(鼠标事件e){
if(dragImage!=null){
点dragPoint=新点(如getPoint());
dragPoint.x+=单击偏移量.x;
拖动点.y+=单击偏移量.y;
位置。放置(绘图、绘图点);
重新油漆();
}
}
};
addMouseListener(硕士);
addMouseMotionListener(ma);
}
@凌驾
公共维度getPreferredSize(){
返回新维度(400400);
}
受保护组件(图形g){
超级组件(g);
Graphics2D g2d=(Graphics2D)g.create();
对于(Map.Entry:locations.entrySet()){
Point=entry.getValue();
g2d.drawImage(entry.getKey(),point.x,point.y,this);
}
g2d.dispose();
}
}
}

要拖动任何东西,您需要知道一些事情。你需要知道他们在哪里以及他们占据的空间

一旦知道了这一点,就可以监视
mouseDragged
事件并更新它们的位置

导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Image;
导入java.awt.Point;
导入java.awt.Rectangle;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
导入javax.imageio.imageio;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公营拖网船{
公共静态void main(字符串[]args){
新德拉格姆();
}
公共排水沟{
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
fr
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class DragMe {

    public static void main(String[] args) {
        new DragMe();
    }

    public DragMe() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private Map<Image, Point> locations;

        public TestPane() {
            locations = new HashMap<>(25);
            try {
                locations.put(ImageIO.read(getClass().getResource("/Pony.png")), new Point(0, 0));
            } catch (IOException ex) {
                ex.printStackTrace();
            }

            MouseAdapter ma = new MouseAdapter() {

                private Image dragImage;
                private Point clickOffset;

                @Override
                public void mousePressed(MouseEvent e) {
                    for (Map.Entry<Image, Point> entry : locations.entrySet()) {
                        Image image = entry.getKey();
                        Point point = entry.getValue();
                        Rectangle bounds = new Rectangle(
                                        point.x, point.y,
                                        image.getWidth(TestPane.this), image.getHeight(TestPane.this));
                        if (bounds.contains(e.getPoint())) {
                            dragImage = image;
                            clickOffset = new Point(point.x - e.getPoint().x, point.y - e.getPoint().y);
                            break;
                        }
                    }
                }

                @Override
                public void mouseReleased(MouseEvent e) {
                    dragImage = null;
                    clickOffset = null;
                }

                @Override
                public void mouseDragged(MouseEvent e) {
                    if (dragImage != null) {
                        Point dragPoint = new Point(e.getPoint());
                        dragPoint.x += clickOffset.x;
                        dragPoint.y += clickOffset.y;

                        locations.put(dragImage, dragPoint);
                        repaint();
                    }
                }

            };

            addMouseListener(ma);
            addMouseMotionListener(ma);
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(400, 400);
        }

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g.create();
            for (Map.Entry<Image, Point> entry : locations.entrySet()) {
                Point point = entry.getValue();
                g2d.drawImage(entry.getKey(), point.x, point.y, this);
            }
            g2d.dispose();
        }

    }

}