So I have the following code:
import java.awt.*;
public class Triangle extends Point {
protected int size;
private int p1x, p2x, p3x, p1y, p2y, p3y;
//Create a new triangle
public Triangle()
{
super();
size = 100;
yPos = 100;
}
public void reSize(int newSize) {
size = size + newSize;
}
//Draw the triangle with current specifications on screen.
public void display(Graphics g) {
p1x = (size / 3);
p2x = (size / 2);
p3x = ((2 * size) / 3);
p1y = ((2 * size) / 3);
p2y = (size / 3);
p3y = ((2 * size) / 3);
int[] xPoints = { p1x, p2x, p3x };
int[] yPoints = { p1y, p2y, p3y };
int npoints = 3;
g.fillPolygon(xPoints, yPoints, npoints);
}
}
And the following code is used to enlarge/reduce the triangle:
if (e.getSource() == makeBigger) {
aShape.reSize(20);
}
else if (e.getSource() == makeSmaller) {
aShape.reSize(-20);
}
The problem is, I also want the ability to drag it using the following code:
this.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent me) {
shapeColor = Color.black;
repaint();
}
public void mouseDragged(MouseEvent me) {
shapeColor = Color.lightGray;
aShape.moveXY(me.getX(), me.getY());
repaint();
}
});
this.addMouseMotionListener(new MouseAdapter() {
public void mouseReleased(MouseEvent me) {
shapeColor = Color.black;
repaint();
}
public void mouseDragged(MouseEvent me) {
shapeColor = Color.lightGray;
aShape.moveXY(me.getX(), me.getY());
repaint();
}
});
And the only way I can see it is that I can have either one or the other. How do I combine it so I can have both features? At the moment it resizes perfectly, but say I change the variablle size in the x/y coordinates to yPos/xPos I’ll be able to drag the triangle but not reshape it.
Thanks!
You’ll want to add
xOffsetandyOffsetmembers and add those in when calculating the corner points:This should let you translate the polygon. Note however that the
moveXYmethod stated above expects parameters containing the difference from earlier, not an absolute position. If you want an absolute position instead, that’s easy to achieve and left as an exercise. 😉