From 27eb5e89d80a719684b225574def435ce41fd966 Mon Sep 17 00:00:00 2001 From: Maggistrator Date: Sun, 15 Aug 2021 10:10:07 +0300 Subject: [PATCH] changed drawbox config --- src/GUI.java | 77 +++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/src/GUI.java b/src/GUI.java index 28b3222..b48b548 100644 --- a/src/GUI.java +++ b/src/GUI.java @@ -68,7 +68,7 @@ public class GUI extends JFrame { @Override public void mouseMoved(MouseEvent e) { if(radioButtonDrawBox.isSelected()) { - if(labelDrawing.listPoints.size()<4) { + if(labelDrawing.listPoints.size() < 2) { labelDrawing.x = e.getX(); labelDrawing.y = e.getY(); labelDrawing.repaint(); @@ -98,22 +98,36 @@ public class GUI extends JFrame { @Override public void mousePressed(MouseEvent e) { if(radioButtonDrawBox.isSelected()) { - if(labelDrawing.listPoints.size()<4) { + if(labelDrawing.listPoints.size() < 2) { labelDrawing.listPoints.add(new PointLine(e.getX(), e.getY())); - if(labelDrawing.listPoints.size() > 1 && labelDrawing.listPoints.size() <=4) { - PointLine p1 = labelDrawing.listPoints.get(labelDrawing.listPoints.size()-2); - PointLine p2 = labelDrawing.listPoints.get(labelDrawing.listPoints.size()-1); - labelDrawing.listLines.add(new Line2D.Float(p1.x,p1.y,p2.x,p2.y)); - - } - if(labelDrawing.listPoints.size() ==4){ - PointLine p1 = labelDrawing.listPoints.get(0); - PointLine p2 = labelDrawing.listPoints.get(labelDrawing.listPoints.size()-1); - labelDrawing.listLines.add(new Line2D.Float(p1.x,p1.y,p2.x,p2.y)); - labelDrawing.sortPoint(); - labelDrawing.listLines.add(new Line2D.Float(saveListPoints.get(2).x,saveListPoints.get(2).y+3,saveListPoints.get(3).x,saveListPoints.get(3).y+3)); - } - + } + if(labelDrawing.listPoints.size() == 2) { + PointLine p1 = labelDrawing.listPoints.get(0); + PointLine p2 = labelDrawing.listPoints.get(1); + labelDrawing.listLines.add(new Line2D.Float(p1.x,p1.y,p2.x,p2.y)); + + //последняя точка треугольника конструируется автоматически + PointLine p3; + if (p1.y > p2.y) p3 = new PointLine(p1.x, p2.y); + else if(p1.y < p2.y) p3 = new PointLine(p2.x, p1.y); + else p3 = new PointLine(p1.x + Math.abs(p1.x - p2.x)/2, p2.y); + labelDrawing.listPoints.add(p3); + labelDrawing.listLines.add(new Line2D.Float(p1.x, p1.y, p3.x, p3.y)); + labelDrawing.listLines.add(new Line2D.Float(p2.x, p2.y, p3.x, p3.y)); + labelDrawing.sortPoint(); + labelDrawing.repaint(); + System.out.println("__list for save___"); + System.out.print("without rect:"); + for(PointLine l: saveListPoints) System.out.print("["+l.x+";"+l.y+"] "); + System.out.println(); + saveListPoints.add(0, new PointLine(0, labelDrawing.heigth)); + saveListPoints.add(1, new PointLine(0, 0)); + saveListPoints.add(2, new PointLine(labelDrawing.width, 0)); + saveListPoints.add(3, new PointLine(labelDrawing.width, labelDrawing.heigth)); + System.out.print("with rect:"); + for(PointLine l: saveListPoints) System.out.print("["+l.x+";"+l.y+"] "); + System.out.println(); + System.out.println("_____"); } } @@ -205,23 +219,19 @@ public class GUI extends JFrame { public void paint(Graphics g) { Graphics2D graphic2d = (Graphics2D) g; if(radioButtonDrawBox.isSelected()) { + graphic2d.setColor(Color.BLUE); + g.drawRect(1, 1, width-3, heigth-3); + graphic2d.setColor(Color.MAGENTA); //это условие для линии которая двигается за мышкой - if(listPoints.size() >= 1) { + if(listPoints.size() >= 1 && listPoints.size() < 3) { PointLine a = listPoints.get(listPoints.size()-1); - graphic2d.setColor(Color.BLUE); graphic2d.draw(new Line2D.Float(a.x,a.y,x,y)); } //отрисовка всех линий if(listLines.size() >= 1) { for(int i = 0;isaveListPoints.get(j).y) { + for (int i = 0; i < saveListPoints.size() - 1; i++) { + for (int j = i + 1; j < saveListPoints.size(); j++) { + if (saveListPoints.get(i).y > saveListPoints.get(j).y) { Collections.swap(saveListPoints, i, j); } } } - if(listPoints.size()>2) { - if(saveListPoints.get(0).x>saveListPoints.get(1).x) { - Collections.swap(saveListPoints, 0, 1); - } - if(saveListPoints.get(2).x