From a0a0e604a91e3279471835d49fc4033ac269499e Mon Sep 17 00:00:00 2001 From: Yorick Date: Tue, 17 Mar 2015 13:21:43 +0100 Subject: [PATCH] kaas --- Applicatie/DrawObject.java | 150 +++++++++++++++++------------- Applicatie/Main.java | 8 +- Applicatie/Panel.java | 171 +++++++++++++++++++++------------- Listeners/MouseMotion.java | 186 ++++++++++++++----------------------- 4 files changed, 270 insertions(+), 245 deletions(-) diff --git a/Applicatie/DrawObject.java b/Applicatie/DrawObject.java index fa5ec5a..a7c4e53 100644 --- a/Applicatie/DrawObject.java +++ b/Applicatie/DrawObject.java @@ -1,4 +1,5 @@ package Applicatie; + import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; @@ -12,8 +13,8 @@ import java.awt.geom.Rectangle2D; import javax.swing.ImageIcon; - -public abstract class DrawObject { +public abstract class DrawObject +{ Point2D position; double rotation; double scale; @@ -39,17 +40,19 @@ public abstract class DrawObject { rotation = 0; this.position = position; } - + public abstract String getName(); - + public void draw(Graphics2D g) { AffineTransform tx = getTransform(); g.drawImage(image, tx, null); - if(selected) { -// g.rotate(Math.toRadians(rotation), image.getWidth(null)/2, image.getHeight(null)/2); - - AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(rotation), position.getX() + image.getWidth(null)/2, position.getY() +image.getHeight(null)/2); + if (selected) + { + // g.rotate(Math.toRadians(rotation), image.getWidth(null)/2, + // image.getHeight(null)/2); + + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(rotation), position.getX() + image.getWidth(null) / 2, position.getY() + image.getHeight(null) / 2); g.transform(rotate); g.setColor(Color.BLACK); g.setStroke(new BasicStroke(7)); @@ -58,31 +61,32 @@ public abstract class DrawObject { rektAngle.setFrame(tx.createTransformedShape(rektAngle).getBounds()); g.draw(rektAngle); g.setColor(Color.YELLOW); - upperLeftCorner = new Rectangle2D.Double(rektAngle.getX()-7,rektAngle.getY()-7,15,15); - upperRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth()-8,rektAngle.getY()-7,15,15); - bottomLeftCorner = new Rectangle2D.Double(rektAngle.getX()-7,rektAngle.getY() + rektAngle.getHeight()-8,15,15); - bottomRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth()-8,rektAngle.getY() + rektAngle.getHeight()-8,15,15); - g.fill(upperLeftCorner); //upperleft - g.fill(upperRightCorner); //upperright - g.fill(bottomLeftCorner); //bottomleft - g.fill(bottomRightCorner); //bottomright + upperLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() - 7, 15, 15); + upperRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() - 7, 15, 15); + bottomLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + bottomRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + g.fill(upperLeftCorner); // upperleft + g.fill(upperRightCorner); // upperright + g.fill(bottomLeftCorner); // bottomleft + g.fill(bottomRightCorner); // bottomright g.setColor(Color.RED); - rotateDot = new Ellipse2D.Double((rektAngle.getX() + (rektAngle.getWidth()/2))-8,rektAngle.getY()-8,15,15); + rotateDot = new Ellipse2D.Double((rektAngle.getX() + (rektAngle.getWidth() / 2)) - 8, rektAngle.getY() - 8, 15, 15); g.fill(rotateDot); - - + } } - protected AffineTransform getTransform() { + protected AffineTransform getTransform() + { AffineTransform tx = new AffineTransform(); tx.scale(scale, scale); tx.translate(position.getX(), position.getY()); tx.rotate(Math.toRadians(rotation), image.getWidth(null) / 2, image.getHeight(null) / 2); return tx; } - - protected AffineTransform getTransformSelection() { + + protected AffineTransform getTransformSelection() + { AffineTransform tx = new AffineTransform(); tx.scale(scale, scale); tx.translate(position.getX(), position.getY()); @@ -90,47 +94,59 @@ public abstract class DrawObject { } /** - * Special transformation for the selection rectangle, because the translation of the image one places the rectangle translated from the image. + * Special transformation for the selection rectangle, because the + * translation of the image one places the rectangle translated from the + * image. + * * @return affineTransform */ - private AffineTransform getTransformRectangle() { + private AffineTransform getTransformRectangle() + { AffineTransform tx = new AffineTransform(); tx.scale(scale, scale); return tx; } - - public boolean contains(Point2D clickPoint) { + + public boolean contains(Point2D clickPoint) + { Shape shape; - if(rektAngle == null) { - shape = new Rectangle2D.Double(0,0,image.getWidth(null), image.getHeight(null)); + if (rektAngle == null) + { + shape = new Rectangle2D.Double(0, 0, image.getWidth(null), image.getHeight(null)); return getTransform().createTransformedShape(shape).contains(clickPoint); - } - else { - shape = new Rectangle2D.Double(-7,-7,image.getWidth(null)+7, image.getHeight(null)+7); + } else + { + shape = new Rectangle2D.Double(-7, -7, image.getWidth(null) + 7, image.getHeight(null) + 7); return getTransformSelection().createTransformedShape(shape).contains(clickPoint); } - + } - - public Point2D getObjectPoint(Point2D point) { - try { + + public Point2D getObjectPoint(Point2D point) + { + try + { return getTransform().inverseTransform(point, null); - } catch (NoninvertibleTransformException e) { + } catch (NoninvertibleTransformException e) + { e.printStackTrace(); } return null; } - + /** - * This method checks if the place thats clicked is inside one of the corners. + * This method checks if the place thats clicked is inside one of the + * corners. * * @param point * @param corner * @return if the clicked point is inside one of the corners */ - public boolean containsCorner(Point2D point, int corner) { + public boolean containsCorner(Point2D point, int corner) + { Rectangle2D chosenCorner = null; - switch(corner) { + switch (corner) + { case 0: chosenCorner = upperLeftCorner; break; @@ -144,65 +160,75 @@ public abstract class DrawObject { chosenCorner = bottomRightCorner; break; case 4: - if(point.getX() > rotateDot.getX() && point.getX() < rotateDot.getX() + rotateDot.getWidth() - && point.getY() > rotateDot.getY() && point.getY() < rotateDot.getY() + rotateDot.getHeight()) + if (point.getX() > rotateDot.getX() && point.getX() < rotateDot.getX() + rotateDot.getWidth() && point.getY() > rotateDot.getY() && point.getY() < rotateDot.getY() + rotateDot.getHeight()) return true; - else + else return false; } - if(point.getX() > chosenCorner.getX() && point.getX() < chosenCorner.getX() + chosenCorner.getWidth() - && point.getY() > chosenCorner.getY() && point.getY() < chosenCorner.getY() + chosenCorner.getHeight()) + if (point.getX() > chosenCorner.getX() && point.getX() < chosenCorner.getX() + chosenCorner.getWidth() && point.getY() > chosenCorner.getY() && point.getY() < chosenCorner.getY() + chosenCorner.getHeight()) return true; - else + else return false; } - - public void setSelected(boolean b) { + + public void setSelected(boolean b) + { selected = b; } - public Point2D getPosition() { + public Point2D getPosition() + { return position; } - public void setPosition(Point2D position) { + public void setPosition(Point2D position) + { this.position = position; } - public double getRotation() { + public double getRotation() + { return rotation; } - public void setRotation(double rotation) { + public void setRotation(double rotation) + { this.rotation = rotation; } - public double getScale() { + public double getScale() + { return scale; } - public void setScale(double scale) { + public void setScale(double scale) + { this.scale = scale; } - public Image getImage() { + public Image getImage() + { return image; } - public void setImage(Image image) { + public void setImage(Image image) + { this.image = image; } - public boolean isSelected() { + public boolean isSelected() + { return selected; } - - public Rectangle2D getRectangle() { + + public Rectangle2D getRectangle() + { return rektAngle; } - - public void setRectangle(Rectangle2D rectangle) { + + public void setRectangle(Rectangle2D rectangle) + { rektAngle = rectangle; } - + } diff --git a/Applicatie/Main.java b/Applicatie/Main.java index 37dc7d7..7966d16 100644 --- a/Applicatie/Main.java +++ b/Applicatie/Main.java @@ -1,9 +1,11 @@ package Applicatie; -public class Main { +public class Main +{ - public static void main(String[] args) { + public static void main(String[] args) + { new Window(); } -} +} \ No newline at end of file diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index a1119e9..0ff8131 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -33,11 +33,11 @@ import Objects.Toilet; import Objects.Wall; @SuppressWarnings("serial") -public class Panel extends JPanel { +public class Panel extends JPanel +{ BufferedImage background; - BufferedImage podiumImage, toiletImage, entranceImage, pathImage, - wallImage; + BufferedImage podiumImage, toiletImage, entranceImage, pathImage, wallImage; private int panelInfox, panelInfoy, scrollfactor; @@ -63,17 +63,20 @@ public class Panel extends JPanel { // en maak een case statement die een new Object returnt in // createNewDrawObject. - Panel(PropertiesPanel pp) { + Panel(PropertiesPanel pp) + { this.pp = pp; pp.setPanel(this); - try { + try + { background = ImageIO.read(new File("images/grass.jpg")); podiumImage = ImageIO.read(new File("images/stageIcon.png")); toiletImage = ImageIO.read(new File("images/wcIcon.png")); entranceImage = ImageIO.read(new File("images/entranceIcon.png")); pathImage = ImageIO.read(new File("images/pathIcon.png")); wallImage = ImageIO.read(new File("images/wallIcon.png")); - } catch (IOException e) { + } catch (IOException e) + { e.printStackTrace(); } panelInfo.add(podiumImage); @@ -97,37 +100,43 @@ public class Panel extends JPanel { addMouseWheelListener(new MouseWheel(this)); } - public int getPanelInfoLength() { + public int getPanelInfoLength() + { int panelInfoLength = 0; - for (BufferedImage image : panelInfo) { + for (BufferedImage image : panelInfo) + { panelInfoLength += image.getWidth(); } return panelInfoLength; } - public DrawObject createNewDrawObject(int index) { - switch (index) { - case 0: - return new Stage(null); - case 1: - return new Toilet(null); - case 2: - return new Entrance(null); - case 3: - return new Path(null); - case 4: - return new Wall(null); - default: - return null; + public DrawObject createNewDrawObject(int index) + { + switch (index) + { + case 0: + return new Stage(null); + case 1: + return new Toilet(null); + case 2: + return new Entrance(null); + case 3: + return new Path(null); + case 4: + return new Wall(null); + default: + return null; } } - public void add(DrawObject dragObject) { + public void add(DrawObject dragObject) + { objects.add(dragObject); } - public void paintComponent(Graphics g) { + public void paintComponent(Graphics g) + { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setClip(new Rectangle2D.Double(0, 0, getWidth(), 300)); @@ -137,7 +146,8 @@ public class Panel extends JPanel { // g2.drawImage(podiumImage, 0, 0, null); g2.drawLine(0, 150, getWidth(), 150); - for (BufferedImage image : panelInfo) { + for (BufferedImage image : panelInfo) + { g2.drawImage(image, panelInfox + scrollfactor, panelInfoy, null); panelInfox += image.getWidth(); } @@ -147,15 +157,15 @@ public class Panel extends JPanel { AffineTransform oldTransform = g2.getTransform(); g2.setTransform(getCamera()); - TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, - 0, 100, 100)); + TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 100, 100)); g2.setPaint(p); g2.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160)); BasicStroke stroke = new BasicStroke(10); g2.setStroke(stroke); - for (DrawObject o : objects) { + for (DrawObject o : objects) + { o.draw(g2); } @@ -163,137 +173,170 @@ public class Panel extends JPanel { g2.setTransform(oldTransform); } - public AffineTransform getCamera() { + public AffineTransform getCamera() + { AffineTransform tx = new AffineTransform(); - tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() - + getHeight() / 2); + tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + getHeight() / 2); tx.scale(cameraScale, cameraScale); return tx; } - public Point2D getClickPoint(Point point) { - try { + public Point2D getClickPoint(Point point) + { + try + { return getCamera().inverseTransform(point, null); - } catch (NoninvertibleTransformException e1) { + } catch (NoninvertibleTransformException e1) + { e1.printStackTrace(); } return null; } - public void setBackground(BufferedImage background) { + public void setBackground(BufferedImage background) + { this.background = background; } - public ArrayList getObjects() { + public ArrayList getObjects() + { return objects; } - public void setObjects(ArrayList objects) { + public void setObjects(ArrayList objects) + { this.objects = objects; } - public DrawObject getDragObject() { + public DrawObject getDragObject() + { return dragObject; } - public void setDragObject(DrawObject dragObject) { + public void setDragObject(DrawObject dragObject) + { this.dragObject = dragObject; } - public Point2D getCameraPoint() { + public Point2D getCameraPoint() + { return cameraPoint; } - public void setCameraPoint(Point2D cameraPoint) { + public void setCameraPoint(Point2D cameraPoint) + { this.cameraPoint = cameraPoint; } - public float getCameraScale() { + public float getCameraScale() + { return cameraScale; } - public void setCameraScale(float cameraScale) { + public void setCameraScale(float cameraScale) + { this.cameraScale = cameraScale; } - public Point2D getLastClickPosition() { + public Point2D getLastClickPosition() + { return lastClickPosition; } - public void setLastClickPosition(Point2D lastClickPosition) { + public void setLastClickPosition(Point2D lastClickPosition) + { this.lastClickPosition = lastClickPosition; } - public Point getLastMousePosition() { + public Point getLastMousePosition() + { return lastMousePosition; } - public void setLastMousePosition(Point lastMousePosition) { + public void setLastMousePosition(Point lastMousePosition) + { this.lastMousePosition = lastMousePosition; } - public BufferedImage getPodiumImage() { + public BufferedImage getPodiumImage() + { return podiumImage; } - public void setPodiumImage(BufferedImage podiumImage) { + public void setPodiumImage(BufferedImage podiumImage) + { this.podiumImage = podiumImage; } - public ArrayList getPanelInfo() { + public ArrayList getPanelInfo() + { return panelInfo; } - public void setPanelInfo(ArrayList panelInfo) { + public void setPanelInfo(ArrayList panelInfo) + { this.panelInfo = panelInfo; } - public int getScrollfactor() { + public int getScrollfactor() + { return scrollfactor; } - public void setScrollfactor(int scrollfactor) { + public void setScrollfactor(int scrollfactor) + { this.scrollfactor = scrollfactor; } - public int getPanelInfox() { + public int getPanelInfox() + { return panelInfox; } - public void setPanelInfox(int panelInfox) { + public void setPanelInfox(int panelInfox) + { this.panelInfox = panelInfox; } - public PropertiesPanel getPP() { + public PropertiesPanel getPP() + { return pp; } - public void update() { + public void update() + { repaint(); } - public DrawObject getSelectedObject() { + public DrawObject getSelectedObject() + { return selectedObject; } - public void setSelectedObject(DrawObject selectedObject) { + public void setSelectedObject(DrawObject selectedObject) + { this.selectedObject = selectedObject; } - public String getClickedOption() { + public String getClickedOption() + { return clickedOption; } - public void setClickedOption(String clickedOption) { + public void setClickedOption(String clickedOption) + { this.clickedOption = clickedOption; } - public void removeObject(DrawObject o) { + public void removeObject(DrawObject o) + { Iterator itr = objects.iterator(); - while (itr.hasNext()) { + while (itr.hasNext()) + { DrawObject nextObject = (DrawObject) itr.next(); - if (nextObject.equals(o)) { + if (nextObject.equals(o)) + { pp.clearSelected(); itr.remove(); } diff --git a/Listeners/MouseMotion.java b/Listeners/MouseMotion.java index ff3bf5a..af72fc4 100644 --- a/Listeners/MouseMotion.java +++ b/Listeners/MouseMotion.java @@ -6,118 +6,72 @@ import java.awt.geom.Point2D; import Applicatie.Panel; -public class MouseMotion extends MouseMotionAdapter { +public class MouseMotion extends MouseMotionAdapter +{ private Panel panel; - public MouseMotion(Panel panel) { + public MouseMotion(Panel panel) + { this.panel = panel; } - public void mouseDragged(MouseEvent e) { + public void mouseDragged(MouseEvent e) + { Point2D clickPoint = panel.getClickPoint(e.getPoint()); - if (panel.getDragObject() != null) { - Point2D objectPoint = panel.getDragObject().getObjectPoint( - panel.getDragObject().getPosition()); - switch (panel.getClickedOption()) { - case "drag": - if (panel.getDragObject() != null) - panel.getDragObject() - .setPosition( - new Point2D.Double( - (panel.getDragObject() - .getPosition().getX()) - - ((panel - .getLastClickPosition() - .getX() - clickPoint - .getX())) - / panel.getDragObject() - .getScale(), - (panel.getDragObject() - .getPosition().getY()) - - (panel.getLastClickPosition() - .getY() - clickPoint - .getY()) - / panel.getDragObject() - .getScale())); + if (panel.getDragObject() != null) + { + switch (panel.getClickedOption()) + { + case "drag": + if (panel.getDragObject() != null) + panel.getDragObject().setPosition(new Point2D.Double((panel.getDragObject().getPosition().getX()) - ((panel.getLastClickPosition().getX() - clickPoint.getX())) / panel.getDragObject().getScale(), (panel.getDragObject().getPosition().getY()) - (panel.getLastClickPosition().getY() - clickPoint.getY()) / panel.getDragObject().getScale())); - break; - case "upperLeft": - if (clickPoint.getX() < panel.getDragObject().getPosition() - .getX() - && clickPoint.getY() < panel.getDragObject() - .getPosition().getY()) { - resizeBigger(); - } else if (clickPoint.getX() > panel.getDragObject() - .getPosition().getX() - && clickPoint.getY() > panel.getDragObject() - .getPosition().getY()) { - resizeSmaller(); - } - break; - case "upperRight": - if (clickPoint.getX() > panel.getDragObject().getRectangle() - .getX() - + panel.getDragObject().getRectangle().getWidth() - && clickPoint.getY() < panel.getDragObject() - .getRectangle().getY()) { - resizeBigger(); - } else if (clickPoint.getX() < panel.getDragObject() - .getRectangle().getX() - + panel.getDragObject().getRectangle().getWidth() - && clickPoint.getY() > panel.getDragObject() - .getRectangle().getY()) { - resizeSmaller(); - } - break; - case "bottomLeft": - if (clickPoint.getX() < panel.getDragObject().getRectangle() - .getX() - && clickPoint.getY() > panel.getDragObject() - .getRectangle().getY() - + panel.getDragObject().getRectangle() - .getHeight()) { - resizeBigger(); - } else if (clickPoint.getX() > panel.getDragObject() - .getRectangle().getX() - && clickPoint.getY() < panel.getDragObject() - .getRectangle().getY() - + panel.getDragObject().getRectangle() - .getHeight()) { - resizeSmaller(); - } - break; - case "bottomRight": - if (clickPoint.getX() > panel.getDragObject().getRectangle() - .getX() - + panel.getDragObject().getRectangle().getWidth() - && clickPoint.getY() > panel.getDragObject() - .getRectangle().getY() - + panel.getDragObject().getRectangle() - .getHeight()) { - resizeBigger(); - } else if (clickPoint.getX() < panel.getDragObject() - .getRectangle().getX() - + panel.getDragObject().getRectangle().getWidth() - && clickPoint.getY() < panel.getDragObject() - .getRectangle().getY() - + panel.getDragObject().getRectangle() - .getHeight()) { - resizeSmaller(); - } - break; - case "rotate": - double tempval = panel.getDragObject().getRotation() - - (panel.getLastClickPosition().getX() - clickPoint - .getX()); - panel.getDragObject().setRotation(tempval); - break; + break; + case "upperLeft": + if (clickPoint.getX() < panel.getDragObject().getPosition().getX() && clickPoint.getY() < panel.getDragObject().getPosition().getY()) + { + resizeBigger(); + } else if (clickPoint.getX() > panel.getDragObject().getPosition().getX() && clickPoint.getY() > panel.getDragObject().getPosition().getY()) + { + resizeSmaller(clickPoint); + } + break; + case "upperRight": + if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY()) + { + resizeBigger(); + } else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY()) + { + resizeSmaller(clickPoint); + } + break; + case "bottomLeft": + if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeBigger(); + } else if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeSmaller(clickPoint); + } + break; + case "bottomRight": + if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeBigger(); + } else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeSmaller(clickPoint); + } + break; + case "rotate": + double tempval = panel.getDragObject().getRotation() - (panel.getLastClickPosition().getX() - clickPoint.getX()); + panel.getDragObject().setRotation(tempval); + break; } - } else { - panel.setCameraPoint(new Point2D.Double(panel.getCameraPoint() - .getX() + (panel.getLastMousePosition().getX() - e.getX()), - panel.getCameraPoint().getY() - + (panel.getLastMousePosition().getY() - e.getY()))); + } else + { + panel.setCameraPoint(new Point2D.Double(panel.getCameraPoint().getX() + (panel.getLastMousePosition().getX() - e.getX()), panel.getCameraPoint().getY() + (panel.getLastMousePosition().getY() - e.getY()))); } panel.repaint(); panel.setLastMousePosition(e.getPoint()); @@ -125,23 +79,23 @@ public class MouseMotion extends MouseMotionAdapter { panel.getPP().update(); } - private void resizeBigger() { - double scale = panel.getDragObject().getScale() * 1 + 0.02; + private void resizeBigger() + { + double scale = panel.getDragObject().getScale() + 0.05; + panel.getDragObject().setScale(scale); - panel.getDragObject().setPosition( - new Point2D.Double( - panel.getDragObject().getPosition().getX() - 2, panel - .getDragObject().getPosition().getY() - 2)); + panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX(), panel.getDragObject().getPosition().getY() - 5)); + } - private void resizeSmaller() { - if (panel.getDragObject().getScale() > 0.2) { - double scale = panel.getDragObject().getScale() * 1 - 0.02; + private void resizeSmaller(Point2D clickPoint) + { + System.out.println(clickPoint.getX()); + if (panel.getDragObject().getScale() > 0.2) + { + double scale = panel.getDragObject().getScale() - 0.05; panel.getDragObject().setScale(scale); - panel.getDragObject().setPosition( - new Point2D.Double(panel.getDragObject().getPosition() - .getX() + 2, panel.getDragObject().getPosition() - .getY() + 2)); + panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX() - clickPoint.getX(), panel.getDragObject().getPosition().getY() - clickPoint.getY())); } } }