Graphics2D - Verbinden zweier Punkte

Soloeco

Aktives Mitglied
Moin,

ich arbeite aktuell an einem Projekt und möchte dabei folgendes tun:
- Ein JFrame erstellen
- Darauf Punkte einzeichnen an variabel bestimmbaren Koordinaten
- Diese Punkte jeweils mit einer geraden Linie verbinden

Wie ich eine Linie und einen Punkt erstelle weiß ich, hier dazu mein Code:
Java:
package SimulationView;

import java.awt.Graphics;
import javax.swing.JPanel;

public class LinePanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawLine(10, 10, 1000, 50);
    }
}

Java:
package SimulationView;

import java.awt.Graphics;

import javax.swing.JPanel;

public class CirclePanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fillOval(10, 10, 20, 20);
    }
}

Hier noch der relevante Code meines Fensters:
Java:
private void initiateFrame() {
        mainFrame = new JFrame("Frame");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        mainFrame.setLayout(new BorderLayout());
       
        initiateCenter();
       
        mainFrame.setVisible(true);
    }
   
    private void initiateCenter() {
        mainFrame.add(new CirclePanel(), BorderLayout.CENTER);
        mainFrame.add(new LinePanel(), BorderLayout.CENTER);       
    }

Dann zu meinen Fragen ... Kann mir jemand die Theorie erklären, wie ich nun Variabel mehrere Punkte an verschiedenen Koordinaten setzen kann, welche ich dann mit einer Linie verbinde?
Des Weiteren besteht ein Problem bei dem sichtbar machen. Beim hinzufügen des Kreises und der Linie, wird immer nur das angezeigt, was ich als letztes hinzufüge zu dem frame, woran liegt das und wie kann ich das beheben?
Brauche nur einen Denkanstoß ... Wäre sehr lieb wenn mir jemand weiterhelfen kann oder weitere Tipps gibt!

Freundliche Grüße :)
 

HarleyDavidson

Bekanntes Mitglied
Du musst alles in einem Panel zeichnen, ansonsten überdeckt das LinePanel den CirclePanel.
Zu dem Verbinden von Punkten: Jeder Endpunkt einer Linie ist der neue Startpunkt einer neuen Linie.
So bekommst du eine durchgehende Linie bestehend aus vielen Punkten.
 

Soloeco

Aktives Mitglied
Danke @HarleyDavidson ! Allerdings habe ich noch eine weitere Frage zu dem Verbinden dann. Und zwar, wie kann ich denn auf die Koordinaten der jeweiligen Punkte zugreifen? Ich meine, die Linie muss ja so zu sagen wissen, wo der Start und wo der Endpunkt ist.
 

HarleyDavidson

Bekanntes Mitglied
Naja, die Koordinaten für die Punkte müssen ja bekannt sein.
Als Klasse bietet sich hier "java.awt.Point" an.
Übergib ein Array (oder Liste o.ä.) an die paintComponent-Methode und dann kannst du die Linien in einer Schleife zeichnen lassen.
 

HarleyDavidson

Bekanntes Mitglied
Hier mal ein kleines Beispiel:
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author Dominik Sust
 * @creation 07.06.2017 07:45:05
 */
public class DrawTest
{
    Point[] points = new Point[]
    {
       new Point(10, 10),
        new Point(300, 30),
        new Point(450, 250),
        new Point(200, 200),
        new Point(40, 350),
        new Point(20, 125),
        new Point(10, 10)
    };

    public static void main( String[] args )
    {
        new DrawTest().work();
    }

    private void work()
    {
        JFrame frame = new JFrame( "DrawTest" );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        JPanel panel = new JPanel()
        {
            @Override
            protected void paintComponent( Graphics g )
            {
                super.paintComponent( g ); //To change body of generated methods, choose Tools | Templates.
                Graphics2D g2d = (Graphics2D) g;
                g2d.setColor( Color.BLACK );
                for ( int i = 0; i < points.length; i++ )
                {
                    //Wir befinden uns noch nicht am letzten Punkt
                    if (i < points.length-1)
                    {
                        Point start = points[i];
                        Point ende = points[i+1];
                        g2d.drawLine( start.x, start.y, ende.x, ende.y );
                    }
                }

            }

        };
        panel.setPreferredSize( new Dimension( 500, 500 ) );
        frame.setContentPane( panel );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible( true );
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Was ist ein Shape, also klar ein Objekt, aber was ist damit gemeint (Graphics2d)? Und was sidn affinetransformationen AWT, Swing, JavaFX & SWT 1
L Graphics2d zoomen AWT, Swing, JavaFX & SWT 3
L AWT graphics2d transform AWT, Swing, JavaFX & SWT 7
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
B Graphics -> Graphics2D etwas zu beachten? AWT, Swing, JavaFX & SWT 8
D AWT Graphics2D getClip gibt null zurück AWT, Swing, JavaFX & SWT 3
B Graphics2D Componente Drehen AWT, Swing, JavaFX & SWT 2
M Graphics2D: drawString Berechnung AWT, Swing, JavaFX & SWT 1
X AWT Graphics2D zum LWJGL Display hinzufügen aber wie? AWT, Swing, JavaFX & SWT 4
D Graphics2D einen Bereich füllen AWT, Swing, JavaFX & SWT 1
M JPanel und Graphics2D AWT, Swing, JavaFX & SWT 2
S Java2D/Graphics2D in Android..? AWT, Swing, JavaFX & SWT 2
B Graphics2d drawString mit double Werten? AWT, Swing, JavaFX & SWT 5
S Graphics2D: Transparent übereinander zeichnen AWT, Swing, JavaFX & SWT 7
S Graphics2D - setClip() AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Graphics2D object in ein anderes Zeichnen AWT, Swing, JavaFX & SWT 7
S AWT Pong - Probleme mit übergreifenden Objekten && Graphics2D AWT, Swing, JavaFX & SWT 3
C Image mit Graphics2D zeichnen AWT, Swing, JavaFX & SWT 9
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
N AWT Graphics2D mehrmals aufrufen AWT, Swing, JavaFX & SWT 5
Developer_X Swing Graphics2D.zoom, wie rückgängig machen? AWT, Swing, JavaFX & SWT 6
Developer_X Swing Graphics2D translate zerstört performance AWT, Swing, JavaFX & SWT 2
N graphics2d auf panel AWT, Swing, JavaFX & SWT 2
Dit_ Ein Kreis als Graphics2D oder als Ellipse2D Objekt AWT, Swing, JavaFX & SWT 19
0 AWT Graphics2D.drawImage() funktioniert nicht mehr korrekt mit Core i7 AWT, Swing, JavaFX & SWT 4
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
A Swing Mit Graphics2D auf transparentem Hintergrund zeichnen AWT, Swing, JavaFX & SWT 7
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
D BufferedImage und Graphics2D AWT, Swing, JavaFX & SWT 3
cowabunga1984 Implementierung von Graphics2D AWT, Swing, JavaFX & SWT 2
C Graphics2D, Text abschneiden AWT, Swing, JavaFX & SWT 2
N Graphics2D mit unterschiedlichen Grauwerten befüllen AWT, Swing, JavaFX & SWT 3
F Graphics2D scale und Positionierung einer TextArea AWT, Swing, JavaFX & SWT 8
F JPanel: Graphics2D, scale und Mauskoordinaten AWT, Swing, JavaFX & SWT 4
P paintComponent /paint/ update/ offscreenImage / Graphics2D / AWT, Swing, JavaFX & SWT 4
M Graphics2D - abstract void draw(.) AWT, Swing, JavaFX & SWT 2
redztripe Graphics2D rotieren und rotiertes Bild abspeichern AWT, Swing, JavaFX & SWT 2
R AffinrTransform + Graphics2D verschieben AWT, Swing, JavaFX & SWT 3
R Graphics2D + Bild anzeigen. AWT, Swing, JavaFX & SWT 25
M Probleme mit Graphics2D AWT, Swing, JavaFX & SWT 7
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
K JavaFX Button verbinden AWT, Swing, JavaFX & SWT 6
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit XYChart verbinden AWT, Swing, JavaFX & SWT 3
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
D JavaFX @FXML Annotation mit Klassen und Instanzen verbinden? AWT, Swing, JavaFX & SWT 5
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
T JTree mit Cloud verbinden AWT, Swing, JavaFX & SWT 0
T Panels mit Button verbinden AWT, Swing, JavaFX & SWT 3
E JList /DefaultListModel mit Datenbank verbinden AWT, Swing, JavaFX & SWT 10
E 2D-Grafik Div. Punkte zur Sinuskurve verbinden AWT, Swing, JavaFX & SWT 25
P JFrames verbinden AWT, Swing, JavaFX & SWT 9
K Zeile verbinden AWT, Swing, JavaFX & SWT 2
B unsortierte Punkte verbinden AWT, Swing, JavaFX & SWT 8
N Swing JTable: Zellen verbinden AWT, Swing, JavaFX & SWT 11
C GridBagLayout Zellen verbinden AWT, Swing, JavaFX & SWT 13
S Polygone verbinden AWT, Swing, JavaFX & SWT 8
K GUI und Hauptklasse verbinden AWT, Swing, JavaFX & SWT 2
L Punkte verbinden AWT, Swing, JavaFX & SWT 3
M Labels in ScrollPane mit Linie verbinden AWT, Swing, JavaFX & SWT 2
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
G 2x Graphics in einer paint() miteinander verbinden AWT, Swing, JavaFX & SWT 11
G ScrollBar mit Frame verbinden? AWT, Swing, JavaFX & SWT 8
D JSlider und JMF player verbinden AWT, Swing, JavaFX & SWT 6
L Mehrere Scrollbar objekte miteinander verbinden AWT, Swing, JavaFX & SWT 3
S Progress Monitor mit einer Methode() verbinden AWT, Swing, JavaFX & SWT 4
G Rowspan (Zellen verbinden) in JTable? AWT, Swing, JavaFX & SWT 3
M Problem bei Verbinden v. jTable, ScrollPane u. JLabel AWT, Swing, JavaFX & SWT 5
W JTable Zellen verbinden AWT, Swing, JavaFX & SWT 2
M JButtons mit Linie verbinden AWT, Swing, JavaFX & SWT 4
F Kollision zweier Images AWT, Swing, JavaFX & SWT 3
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
W Vergleich zweier Strings und schreiben in Textarea AWT, Swing, JavaFX & SWT 12
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
T Kontrast zweier Farben vergleichen AWT, Swing, JavaFX & SWT 5
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben