dragging
This commit is contained in:
parent
29fc0f1849
commit
91e7d2541a
@ -17,11 +17,17 @@ public class CircuitPanel extends JPanel {
|
|||||||
|
|
||||||
private Circuit circuit = new Circuit();
|
private Circuit circuit = new Circuit();
|
||||||
|
|
||||||
|
private Part dragPart = null;
|
||||||
|
|
||||||
|
private Point dragPoint = null;
|
||||||
|
|
||||||
|
private Point dragOffset = null;
|
||||||
|
|
||||||
public CircuitPanel() {
|
public CircuitPanel() {
|
||||||
addMouseListener(new MouseAdapter() {
|
final MouseAdapter listener = new MouseAdapter() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(final MouseEvent e) {
|
public void mouseClicked(final MouseEvent e) {
|
||||||
final int x = e.getX() / RASTER;
|
final int x = e.getX() / RASTER;
|
||||||
final int y = e.getY() / RASTER;
|
final int y = e.getY() / RASTER;
|
||||||
final Optional<Part> partOptional = circuit.getParts().stream().filter(p -> p.getX() == x && p.getY() == y).findFirst();
|
final Optional<Part> partOptional = circuit.getParts().stream().filter(p -> p.getX() == x && p.getY() == y).findFirst();
|
||||||
@ -42,7 +48,39 @@ public class CircuitPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
@Override
|
||||||
|
public void mousePressed(final MouseEvent e) {
|
||||||
|
final int x = e.getX() / RASTER;
|
||||||
|
final int y = e.getY() / RASTER;
|
||||||
|
dragOffset = new Point(RASTER / 2, RASTER / 2);
|
||||||
|
dragPart = circuit.getParts().stream().filter(p -> p.getX() == x && p.getY() == y).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseDragged(final MouseEvent e) {
|
||||||
|
if (dragPart != null) {
|
||||||
|
dragPoint = e.getPoint();
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(final MouseEvent e) {
|
||||||
|
if (dragPart != null) {
|
||||||
|
final int x = e.getX() / RASTER;
|
||||||
|
final int y = e.getY() / RASTER;
|
||||||
|
dragPart.setX(x);
|
||||||
|
dragPart.setY(y);
|
||||||
|
dragPart = null;
|
||||||
|
dragPoint = null;
|
||||||
|
dragOffset = null;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
addMouseListener(listener);
|
||||||
|
addMouseMotionListener(listener);
|
||||||
circuit = DemoAll.create();
|
circuit = DemoAll.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +93,10 @@ public class CircuitPanel extends JPanel {
|
|||||||
drawParts(g);
|
drawParts(g);
|
||||||
drawRaster(g, w, h);
|
drawRaster(g, w, h);
|
||||||
drawWires(g);
|
drawWires(g);
|
||||||
|
if (dragPart != null && dragPoint != null) {
|
||||||
|
g.setColor(new Color(192, 192, 192, 128));
|
||||||
|
g.fillRect(dragPoint.x - dragOffset.x, dragPoint.y - dragOffset.y, RASTER, RASTER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawBack(final Graphics2D g, final int w, final int h) {
|
private void drawBack(final Graphics2D g, final int w, final int h) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user