mehrere Polyline-Objekte zeichnen

JG12111989

Mitglied
Hallo,

ich habe ein Projekt, das mir Polyline-Objekte zeichnet. Wenn ich auf den entsprechenden Button klicke, soll mit einem neuen Polyline-Objekt begonnen werden. Leider bekomme ich das nicht hin. Hat jemand eine Idee?

Java:
package zeichnen;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Zeichenprogramm extends JFrame implements MouseListener, ActionListener {

  private Zeichenflaeche leinwand;
  private ArrayList<Integer> listeX;
  private ArrayList<Integer> listeY;
  private int[] x, y;

  private JButton btnRefresh, btnAddPolygon;

  public Zeichenprogramm() {
  setTitle("Zeichenprogramm");

  btnRefresh = new JButton("Refresh");
  btnAddPolygon = new JButton("Weiteres Polygon");
//  x = new int[1000];
//  y = new int[1000];
  listeX = new ArrayList<>();
  listeY = new ArrayList<>();
  leinwand = new Zeichenflaeche();
  leinwand.setPreferredSize(new Dimension(400, 400));
  add(leinwand);

  add(btnRefresh, BorderLayout.SOUTH);
  add(btnAddPolygon, BorderLayout.NORTH);
  btnRefresh.addActionListener(this);
  btnAddPolygon.addActionListener(this);
  leinwand.addMouseListener(this);

  int bildschirmHoehe = getToolkit().getScreenSize().height;
  int bildschirmBreite = getToolkit().getScreenSize().width;

  setLocation(bildschirmBreite / 2 - 300 / 2, bildschirmHoehe / 2 - 300 / 2);

//  setBounds(wert, wert, wert, wert);
  // orientiert sich an den preferredSize-Angaben
  // und zeigt den Bildschirm beim Start entsprechend an
  // hat aber keine Auswirkung auf spätere Fenstergrößen-Änderungen
  pack();

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setVisible(true);
  }

  public static void main(String[] args) {
  // TODO code application logic here
  new Zeichenprogramm();
  }

  @Override
  public void mouseClicked(MouseEvent e) {
  }

  @Override
  public void mousePressed(MouseEvent e) {
  listeX.add(e.getX());
  listeY.add(e.getY());
  repaint();
  }

  @Override
  public void mouseReleased(MouseEvent e) {
  }

  @Override
  public void mouseEntered(MouseEvent e) {
  }

  @Override
  public void mouseExited(MouseEvent e) {
  }

  @Override
  public void actionPerformed(ActionEvent e) {
  if (e.getSource() == btnRefresh) {
  listeX.clear();
  listeY.clear();
  }
  else if(e.getSource() == btnAddPolygon){
   //??
  }
  repaint();
  }

  class Zeichenflaeche extends JPanel {

  @Override
  protected void paintComponent(Graphics g) {
  super.paintComponent(g);

  x = new int[listeX.size()];
  y = new int[listeY.size()];
  for (int i = 0; i < listeX.size(); i++) {
  x[i] = listeX.get(i);
  y[i] = listeY.get(i);
  }

  g.drawPolyline(x, y, listeX.size());
  }

  }
}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Was genau funktioniert nicht bzw. bekommst du nicht hin?
Was ist für dich ein Polygon Objekt in diesem Fall? Du speicherst dir nur die Koordinaten zu einem bestimmten Punkt (kompliziert aufgeteilt auf 2 Listen, welche immer synchron bleiben müssen. Hier wäre es besser die beiden Werte x/y in einer Klasse zu kapseln und nur Objekt dieser Klasse in einer einzigen Liste zu verwalten).
Was soll passieren wenn ein neues Polygon angelegt werden soll?
 

JG12111989

Mitglied
Mein Ziel ist es, dass der Benutzer auf der Zeichenfläche beliebe Punkte anklicken kann und somit ein offenes Polygon (also eine Polyline) zeichnen kann. Bei Klick auf den Button "Weiteres Polygon" soll die Polyline unterbrochen werden und eine neue Line ab dem nächsten angeklickten Ort auf der Zeichenfläche beginnen.

Ich hatte die Idee, weiterhin alle Koordinaten in den Arrays abzuspeichern, nur eben diese eine Linie, die ausgelassen werden soll, zu löschen oder irgendwie invisible zu setzen (mit Hilfe von drawline(), wobei ich Probleme hatte, die Farbe nur dieser einen line und nicht der kompletten Polyline zu bearbeiten).
 

Joose

Top Contributor
Ich würde hier nicht bei den beiden Listen bleiben sondern versuchen hier eine Datenstruktur zu erzeugen.
Eine "Polyline" besteht aus einer Liste von "Points" ein jeder Punkt hat eine X bzw. Y Koordinate.
Dein Programm kann eine Liste von Polyline Objekten verwalten.

Dein Programm hat somit immer ein aktive Polyline Objekt ... solange herumgeklickt wird werden die Punkte zu dem aktuellen Objekt hinzugefügt. Wird der Button "weiteres Polygon" angeklickt wird ein neues Polyline Objekt erstellt, der Liste hinzugefügt und als aktive Polyline Objekt gesetzt.

Wenn du wirklich bei der Variante mit den beiden Listen bleiben willst sehe ich auf die schnell nur eine Möglichkeit: Wenn es nur positive Koordinaten geben kann dann füge den Listen doch jeweils "-1" als Wert hinzu. So ein Punkt kennzeichnet eine Unterbrechung. Beim Zeichnen der Linie musst du dann halt immer kontrollieren ob der Zielpunkt "-1|-1" wäre und wenn ja nichts zeichnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
F JavaFX Mehrere Stages "managen" AWT, Swing, JavaFX & SWT 2
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
S Swing Mehrere Modal-Dialoge übereinander AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
C Java FX Warnmeldung: Mehrere Fonts gehören derselben Familie und Stil AWT, Swing, JavaFX & SWT 2
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
D Mehrere RadiButtons auswählar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
J Mehrere Hyperlinks "stilvoll" darstellen. AWT, Swing, JavaFX & SWT 1
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
M Mehrere Fenster innerhalb einer Application AWT, Swing, JavaFX & SWT 3
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
T [LWJGL] mehrere Displays? AWT, Swing, JavaFX & SWT 19
SexyPenny90 Mehrere Fenster AWT, Swing, JavaFX & SWT 2
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
G Mehrere Layoutprobleme AWT, Swing, JavaFX & SWT 2
Kenan89 JTable mehrere ListSelections AWT, Swing, JavaFX & SWT 2
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
N Mehrere Tasks nacheinander ausführen AWT, Swing, JavaFX & SWT 7
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
M Mehrere JPanel nacheinander?! AWT, Swing, JavaFX & SWT 11
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing Ein JFrame mehrere Ansichten AWT, Swing, JavaFX & SWT 8
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
S Mehrere JLists - Wie kennzeichnen? AWT, Swing, JavaFX & SWT 2
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
L Swing Mehrere Button die selbe Größe AWT, Swing, JavaFX & SWT 4
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
G mehrere JPanel in ein (vertikales) JScrollPane AWT, Swing, JavaFX & SWT 8
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
N mehrere JComboBoxes AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben