Ich versuche mehrere Linien in einem Panel zeichnen zu lassen. Das zeichnen an sich funktioniert auch, mein Problem ist nur, dass die Linien immer nebeneinander dargestellt werden, obwohl sie sich in einem normalen Koordinatensystem überschneiden würden (so will ich es haben).
Ein Beispiel:
Ich habe versucht diese Linien zeichnen zu lassen:
Linie1: P1(1/1) P2(4/9)
Linie2: P1(1/3) P2(16/5)
Linie3: P1(2/9) P2(15/2)
das sollte dann etwa so aussehen:
aber es sieht so aus:
Ich habe 4 Listen zur Speicherung der Koordinaten (werden durch User eingegeben)
Auf Button-Klick sollen dann alle Linien gezeichnet werden
Hat jemand vielleicht eine Idee, wie ich es schaffe, dass sie Linien auch übereinander dargestellt werden?
Danke schon mal im voraus.
Ein Beispiel:
Ich habe versucht diese Linien zeichnen zu lassen:
Linie1: P1(1/1) P2(4/9)
Linie2: P1(1/3) P2(16/5)
Linie3: P1(2/9) P2(15/2)
das sollte dann etwa so aussehen:
aber es sieht so aus:
Ich habe 4 Listen zur Speicherung der Koordinaten (werden durch User eingegeben)
Java:
static ArrayList<Float> wertex1= new ArrayList<>();
static ArrayList<Float> wertey1= new ArrayList<>();
static ArrayList<Float> wertex2= new ArrayList<>();
static ArrayList<Float> wertey2= new ArrayList<>();
Auf Button-Klick sollen dann alle Linien gezeichnet werden
Code:
public void actionPerformed (ActionEvent ae){
if(ae.getSource() == b2){
for(int i = 0; i < wertex1.size(); i++) {
int x1 = Math.round(wertex1.get(i));
int y1 = Math.round(wertey1.get(i));
int x2 = Math.round(wertex2.get(i));
int y2 = Math.round(wertey2.get(i));
linie = new MyPanel(x1, y1, x2, y2);
panel3.add(linie, BorderLayout.CENTER);
revalidate();
repaint();
}
}
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
int x1, y1, x2, y2;
public MyPanel(int x1, int y1, int x2, int y2){
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public void paint(Graphics gr){
super.paintComponents(gr);
Graphics2D g = (Graphics2D)gr;
g.setColor(Color.BLACK);
g.drawLine(x1, y1, x2, y2);
}
}
Hat jemand vielleicht eine Idee, wie ich es schaffe, dass sie Linien auch übereinander dargestellt werden?
Danke schon mal im voraus.