Kreis nach Mausklick zeichnen

Cosma

Aktives Mitglied
Hallo,
gleich zu Anfang ich bin in Java sehr schlecht also habt bitte Nachsicht :D
Ich will ein Programm schreiben, wo ich in mein Panel reinklicken kann und dann dort ein Kreis gezeichnet wird.

Ich bin ein bisschen überfordert, da ich nicht genau weiß, wo ich das genau 'hinschreibe'...

Java:
package endprojekt;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;

public class Endprojekt extends JFrame implements ActionListener, MouseListener {
    
    JFrame hansi;
    zeichenpanel zeichnung;
    JButton farbeaendern;
    JButton koordinatenspeichern;
    JPanel buttonpanel;
    
    

    public static void main(String[] args) {
        Endprojekt project=new Endprojekt();
        project.los();
        
        
        
    }
    
    
    
    public void los()
    {
        hansi=new JFrame();
        hansi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        zeichnung=new zeichenpanel();
        hansi.getContentPane().add(BorderLayout.CENTER,zeichnung);
        
    
        
        
        hansi.setBackground(Color.WHITE);
        hansi.setSize(600,600);
        
        buttonpanel=new JPanel();
        farbeaendern=new JButton("Farbe ändern");
        
        koordinatenspeichern=new JButton("Koordinaten speichern");
        buttonpanel.add(farbeaendern);
        buttonpanel.add(koordinatenspeichern);
        buttonpanel.setLayout(new GridLayout(1,2));
        hansi.getContentPane().add(BorderLayout.SOUTH,buttonpanel);
      
        
        hansi.setVisible(true);
        
        
        
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        Graphics g=getGraphics();
        int x=e.getX();
        int y=e.getY();
        g.setColor(Color.red);
        g.drawOval(x, y, 15, 15);
        
        zeichnung.repaint();
    }

    @Override
    public void mousePressed(MouseEvent e) {
       
    }

    @Override
    public void mouseReleased(MouseEvent e) {
       
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        
    }
    
    
    
}

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package endprojekt;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;

/**
 *
 * @author Administrator
 */
public class zeichenpanel extends JPanel {
    
    
    
    
    @Override
       public void paintComponent(Graphics g)
    {
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, this.getWidth() , this.getHeight());
        

         
    }
    
    
}

Meine konkrete Frage ist, ob ich das bei MouseClicked richtig definiert habe oder ich das in paintComponent machen muss?!

Ich hoffe ihr könnt mir ein bisschen weiterhelfen :)
 

Marco13

Top Contributor
[WR]Nicht auf components 'getGraphics' aufrufen![/WR]

In diesem Fall wäre der Ablauf eher so, dass in der 'mouseClicked'-Methode z.B. ein Objekt erstellt wird (hier wohl nur ein "Point") und dieses Objekt dann ans ZeichenPanel weitergreicht wird. Dann ruft man zeichenPanel.repaint() auf, und das Zeichenpanel zeichnet das Objekt.

Kannst dir auch mal http://www.java-forum.org/entwuerfe/113007-kein-swing-tutorial-2.html#post806479 ansehen - das geht schon in diese Richtung. (Aber auch berücksichtigen, ob es in Zukunft mehrere Objekte geben wird und so - siehe auch die auf den obigen folgenden Beiträge)
 

uranus-home

Neues Mitglied
So vielleicht?


Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

class KreisMalen extends MouseAdapter {
  Zeichnung z = new Zeichnung();
  JFrame frame = new JFrame("KreisMalen");
  int x = 0;
  int y = 0;
  public KreisMalen() {
    frame.add(z);
    frame.addMouseListener(this);
    frame.setSize(300,300);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  public void mousePressed(MouseEvent evt) {
    x = evt.getX() - 20;
    y = evt.getY() - 30;
    frame.repaint();
  }
  class Zeichnung extends JPanel {
    public void paintComponent(Graphics g) {
      g.fillOval(x,y,20,20);
    }
  }
  public static void main(String[] args) {
    new KreisMalen();
  }
}
 

Cosma

Aktives Mitglied
So vielleicht?


Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

class KreisMalen extends MouseAdapter {
  Zeichnung z = new Zeichnung();
  JFrame frame = new JFrame("KreisMalen");
  int x = 0;
  int y = 0;
  public KreisMalen() {
    frame.add(z);
    frame.addMouseListener(this);
    frame.setSize(300,300);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  public void mousePressed(MouseEvent evt) {
    x = evt.getX() - 20;
    y = evt.getY() - 30;
    frame.repaint();
  }
  class Zeichnung extends JPanel {
    public void paintComponent(Graphics g) {
      g.fillOval(x,y,20,20);
    }
  }
  public static void main(String[] args) {
    new KreisMalen();
  }
}

Das hat mir schon mal weiter geholfen, danke! ;)
Nur hier wird der Kreis wenn ich ein 2. Mal hinein klicke dann auf diese Position gesetzt. Wie mache ich das dann damit ich wenn ich ein 2. Mal Klicke ein 2. Kreis gezeichnet wird und der erste dort bleibt?
 

truesoul

Top Contributor
Hallo.

Zum Beispiel indem du eine Collection verwendest, die die Kreise speichert ( hält ), und du dann aus der Liste zeichnest.
 

Cosma

Aktives Mitglied
Ok es hat sich erledigt, ich habe es geschafft. Wahrscheinlich eine Pfuschlösung aber so kann ich wenigstens weitermachen und es wieder selbst reproduzieren :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
C Kleinsten Kreis einer Punktmenge bestimmen Java Basics - Anfänger-Themen 4
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
Y Kreis auf einer Kreisbahn bewegen Java Basics - Anfänger-Themen 5
P Erste Schritte Kreis animieren Java Basics - Anfänger-Themen 2
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39
H Kreis verschieben Java Basics - Anfänger-Themen 10
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
X Kreis/Linie Programmieren Java Basics - Anfänger-Themen 1
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
L Dreieck Kreis Java Basics - Anfänger-Themen 12
A Kreis,Radius Programm Java Basics - Anfänger-Themen 3
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
A wie Kreis mit Schleife versetzten? Java Basics - Anfänger-Themen 25
O Punkte auf einem Kreis "wandern" lassen Java Basics - Anfänger-Themen 3
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
D Kreis mit Pfeiltaste bewegen Java Basics - Anfänger-Themen 3
K Bild auf Kreis packen Java Basics - Anfänger-Themen 2
E Kreis erstellen Java Basics - Anfänger-Themen 10
B Einen Kreis erzeugen Java Basics - Anfänger-Themen 3
S Erzeuge einen Kreis Java Basics - Anfänger-Themen 16
B Kreis,Punkt,Zylinder Java Basics - Anfänger-Themen 6
D Punktberechnung im Kreis Java Basics - Anfänger-Themen 15
TheKing Bild nur in Kreis sichtbar machen Java Basics - Anfänger-Themen 6
K Kreis mit neuer Position zeichnen Java Basics - Anfänger-Themen 3
M Umfang von Rechteck oder Kreis anhand der Parameter Java Basics - Anfänger-Themen 2
L Klickbarer Bereich in einem Kreis Java Basics - Anfänger-Themen 13
D kreis gelb gefüllt aber schwarzer rand. Java Basics - Anfänger-Themen 2
K Kreis Zeichnen ? Code Richtig aber keine Zeichung Java Basics - Anfänger-Themen 8
L Kreis der sich bewegt Java Basics - Anfänger-Themen 11
G Kreis auf JComponent zeichnen Java Basics - Anfänger-Themen 8
0 Klasse Kreis Java Basics - Anfänger-Themen 4
P Java-Applet, Kreis zeichnen Java Basics - Anfänger-Themen 4
E Kreis in Frame ,den man mit der Maus versetzen kann? Java Basics - Anfänger-Themen 2
7 Kreis zeichnen Java Basics - Anfänger-Themen 4
J Kreis herumfliegen & abprallen von Rändern Java Basics - Anfänger-Themen 7
G contains - Punkt in Kreis enthalten? Java Basics - Anfänger-Themen 6
A Kreis mit gedrückter Maustaste bewegen. Java Basics - Anfänger-Themen 2
S Thread - Kugel im Kreis hin-und herflitzen lassen Java Basics - Anfänger-Themen 3
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
D Programmieren nach UML Java Basics - Anfänger-Themen 2
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
K log4j nach log4j2 überführen Java Basics - Anfänger-Themen 0
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Zahlungen nach Monat filtern Java Basics - Anfänger-Themen 2
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
I String nach Wort suchen Java Basics - Anfänger-Themen 6
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
C Meldung einer Klasse nach "oben" Java Basics - Anfänger-Themen 6
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben