algorithms-for-computing-li.../src/main/java/View/ArrangementDialog2.java

89 lines
2.4 KiB
Java

package View;
import Model.Point;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;
import java.util.LinkedList;
/**
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
*
* @Author: Armin Wolf
* @Email: a_wolf28@uni-muenster.de
* @Date: 03.06.2017.
*/
public class ArrangementDialog2 extends JPanel {
private int min = 0;
private int max = 800;
private int zero = max/2;
private double scale = 1.0;
private int pointThicknes = 5;
private Dimension dimension;
private LinkedList<LinkedList<Point>> lines;
private LinkedList<Point> points;
private LinkedList<Line2D.Double> line2Ds;
public ArrangementDialog2(){
super();
this.dimension = new Dimension(max,max);
this.setPreferredSize(dimension);
this.setLayout(new BorderLayout());
}
public void setPrameters(LinkedList<LinkedList<Point>> lines, LinkedList<Point> points) {
this.lines = lines;
this.points = points;
this.repaint();
}
public double getScale() {
return scale;
}
public void setScale(double scale) {
this.scale = scale;
}
public int getPointThicknes() {
return pointThicknes;
}
public void setPointThicknes(int pointThicknes) {
this.pointThicknes = pointThicknes;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
line2Ds = new LinkedList<>();
g2.translate(zero, zero);
g2.scale(scale, scale);
g2.translate(-1 * zero, -1 *zero);
//draw the lines
g2.setColor(Color.BLACK);
g2.setStroke(new BasicStroke(5f / (float) scale));
for (LinkedList<Point> line : lines){
line2Ds.add(new Line2D.Double(zero +line.getFirst().getX().intValue(), zero +line.getFirst().getY().intValue(), zero +line.getLast().getX().intValue(), zero +line.getLast().getY().intValue()));
}
for (Line2D.Double line : line2Ds) {
g2.draw(line);
}
//draw intersections of the lines
g2.setColor(Color.RED);
for (Point point : points) {
g2.fillOval(zero +point.getX().intValue(),zero +point.getY().intValue(), pointThicknes, pointThicknes);
}
}
}