auf einem geladenen Bild zeichnen

Status
Nicht offen für weitere Antworten.

Perplex

Mitglied
Ich habe folgendes Problem: ich möchte auf ein geladenes Bild einen Punkt zeichnen, weiss aber nicht, wie ich in der Methode "mouseClicked" die Methode "draw" aufrufen soll d.h. was genau ich in die mouseClicked-Methode reinschreiben muss, damit draw aufgerufen wird. Wär nett, wenn sich Jemand meinen Code mal ansieht.Bin dankbar für jede Hilfe. :(


Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;


public class HandManager extends JFrame implements ActionListener {
	
	private static HandManager hand;
	private JFileChooser fc;
	private PictureCanvas2 ph;
	private JButton b;
	
	public HandManager() {
	
		super ("Fenster");
		fc = new JFileChooser();
	     ph = new PictureCanvas2();
		//ph.setPreferedSize(300,300);
	     Container c = getContentPane();
		c.setLayout (new BorderLayout(3,3));
		 b = new JButton ( "Button");
		b.addActionListener( this);
		c.add(b,BorderLayout.NORTH);
		//Component ph = new PictureHandler();
		getContentPane().add(ph,BorderLayout.CENTER);
	                pack();
		setSize(300,300);
		setLocation(300,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		}
	
	public static void main (String [] args) {
		hand = new HandManager();
	}
	
	public void actionPerformed(ActionEvent event) {
		
		if (event.getSource()==b) {
	int returnVal = fc.showOpenDialog(HandManager.this);
	ph.showImage(fc.getSelectedFile());
		}
	}
}

import java.awt.Color;
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.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JPanel;


class PictureCanvas2 extends JPanel implements MouseListener {

	

	class PaintGeometricStuff {
		
	Graphics myGraphic;

	public PaintGeometricStuff(Graphics g) {
	myGraphic = g;
	
	
	}

	public  void draw(Graphics myGraphics) {
	myGraphics.setColor(Color.black);
		myGraphics.fillOval( 4,5,5,4 );
	}
	

	}

	
		BufferedImage bi;
		
	
		
	public void paintComponent(Graphics g) {
				
				if (bi != null) {
					g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight ( ),Color.white,null);
				
	}
	}

	
				public void showImage(File f) {
			try {
				bi = ImageIO.read(f);
				 			}
			catch (Exception e) {
					System.out.println("Fehler beim Bildladen");
				}
				repaint();
				}

	public void mouseClicked(MouseEvent arg0) {
		
		PaintGeometricStuff.draw() ;
				
	}

	public void mouseEntered(MouseEvent arg0) {
		
	}

	public void mouseExited(MouseEvent arg0) {
			}

	public void mousePressed(MouseEvent arg0) {
		
		
	}

	public void mouseReleased(MouseEvent arg0) {
				
	}
 
M

mr1st

Gast
Da Du die Variable myGraphics bereits in der Klasse deklariert hast, musst Du sie nicht extra übergeben.

Code:
public void draw()
{ myGraphics.setColor(Color.black);
  myGraphics.fillOval(4,5,5,4);
}

Da die mouseClicked Methode in der gleichen Klasse steht, kannst Du sie einfach so aufrufen:
Code:
public void mouseClicked(MouseEvent arg0)
{ draw() ;
}

Da Du wahrscheinlich aber dort zeichnen willst, wo die Maus ist:
Code:
public void draw(int x, int y)
{ myGraphics.setColor(Color.black);
  myGraphics.fillOval(x,y,5,4);
}

public void mouseClicked(MouseEvent me)
{ // Die Mauskoordinaten ermitteln
  int x = me.getX();
  int y = me.getY(); 
  draw(x,y) ;
}

MfG
 

Wildcard

Top Contributor
Mach das nicht!
In der paintComponent bildest du nur ein DatenModel ab.
Das heißt du speicherst dir die Position des MouseClicks in einer Liste oÄ. und rufst repaint() auf.
Die paintComponent zeichnet dann den Inhalt der Liste. Speicher dir keine Graphics Objekte, und ruf Methoden
zum zeichnen nur indirekt über repaint() auf!

btw: was soll denn das?
Code:
private static HandManager hand;
hand = new HandManager();
 

Perplex

Mitglied
Vielen Dank!!! So müsste es klappen! Ich hab aber ganz vergessen, den MouseListener zu registrieren(...addMouseListener...), d.h. ich weiss nicht, wo und wie ich das hinschreiben soll. In den Konstruktor der Hauptklasse oder in den Konstruktor der PaintGeometricStuff-Klasse? Beides klappt irgendwie nicht.
 

Wildcard

Top Contributor
mach in den Konstruktor von PictureCanvas
Code:
this.addMouseListener(new MouseAdapter() {
		
    public void mouseClicked(MouseEvent e)
    {
            //je nachdem welche Methoden du überschreiben willst
    }
			
});
 

Perplex

Mitglied
Meine PictureCanvas2-Klasse hat ja keinen Konstruktor.Ich hab ja ne innere Klasse "PaintGeometricStuff", die einen Konstruktor hat. Da hab ich das reingeschrieben, was Du vorgeschlagen hast.Dann kam die Fehlermeldung, dass die Methode addMouseListener für den Typ PictureCanvas2.PaintGeometricStuff ist (ich arbeite mit eclipse). Das Probem ist, dass ich ne innere Klasse habe mit einem Konstruktor und eine äussere Klasse, die MouseListener implementiert.Also müsste ich doch die addMouseListener-Methode in einen Konstruktor der PictureCanvas2-Klasse reinschreiben, den ich aber gar nicht habe. Die Idee mit der inneren Klasse war auch nicht von mir, sondern von nem Bekannten.

Ausserdem: muss ich da noch was in mouseClicked reinschreiben, oder einfach so lassen, wie Du's aufgeschrieben hast?

Ich meine jetzt in dem Code-Abschnitt

Code:
this.addMouseListener(new MouseAdapter() { 
       
    public void mouseClicked(MouseEvent e) 
    { 
            //je nachdem welche Methoden du überschreiben willst 
    } 
          
});
 

Perplex

Mitglied
Meine PictureCanvas2-Klasse hat ja keinen Konstruktor.Ich hab ja ne innere Klasse "PaintGeometricStuff", die einen Konstruktor hat. Da hab ich das reingeschrieben, was Du vorgeschlagen hast.Dann kam die Fehlermeldung, dass die Methode addMouseListener für den Typ PictureCanvas2.PaintGeometricStuff ist (ich arbeite mit eclipse). Das Probem ist, dass ich ne innere Klasse habe mit einem Konstruktor und eine äussere Klasse, die MouseListener implementiert.Also müsste ich doch die addMouseListener-Methode in einen Konstruktor der PictureCanvas2-Klasse reinschreiben, den ich aber gar nicht habe. Die Idee mit der inneren Klasse war auch nicht von mir, sondern von nem Bekannten.

Ausserdem: muss ich da noch was in mouseClicked reinschreiben, oder einfach so lassen, wie Du's aufgeschrieben hast?

Ich meine jetzt in dem Code-Abschnitt

Code:
this.addMouseListener(new MouseAdapter() { 
       
    public void mouseClicked(MouseEvent e) 
    { 
            //je nachdem welche Methoden du überschreiben willst 
    } 
          
});
 

Wildcard

Top Contributor
1. brauchts du wenn du das so machst wie vorgeschlagen keinen MouseListener zu implementieren,
2. was hindert dich daran deinem Panel einen Konstruktor zu verpassen?
3. frag ich mich eh was die innere Klasse da soll ...
4. bei mouse clicked merkst du dir den Punkt an den geklickt wurde und rufst repaint() auf.
 

Perplex

Mitglied
Wäre es zu viel verlangt, wenn Du mir den kompletten Code in korrigierter Form aufschreibst? Du scheinst ja wirklich ein Java-Profi zu sein. Das übersteigt im Moment noch meinen Horizont, dass alles selbst zu machen, da ich noch etwas Probleme mit dem objektorientierten Denken habe.
Wenn ich die innere Klasse wegmache, was ich heute versucht habe und PictureCanvas2 einen Konstruktor verpasse, bekomme ich wieder etliche andere Probleme in eclipse angezeigt, die ich nicht in den Griff kriege.

Ich sitze jetzt schon seit einigen Tagen vor dem Problem, eine Zeichenfunktion zu erstellen, mit der ich auf einem geladenen Bild einen Punkt zeichnen kann.
 

Wildcard

Top Contributor
Ok, aber nur ein kleines:

Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * @author Wildcard
 * created at 02.05.2005
 */
public class PaintOnComponent extends JFrame
{
	
	private List points = new ArrayList();

	public PaintOnComponent()
	{
		

		JPanel drawPanel = new JPanel() {
		
			protected void paintComponent(Graphics g)
			{

				super.paintComponent(g);
				g.setColor(Color.RED);
				Iterator it = points.iterator();
				while (it.hasNext())
				{
					Point p = (Point) it.next();
					g.fillOval(p.x,p.y,5,5);
				}
			}
		
		};
		drawPanel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e)
			{
				points.add(e.getPoint());
				repaint();
			}
		
		});
		drawPanel.setSize(500,500);
		
		getContentPane().add(drawPanel);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(500,500);
		
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		PaintOnComponent p = new PaintOnComponent();
		p.setVisible(true);

	}

}
 

Perplex

Mitglied
Ja super!!!! Ganz herzlichen Dank!!!!!!! Jetzt hab ich wenigstens schon mal ne Zeichenfunktion. Weiss zwar noch nicht, wie ich das geladene Bild da reinkriege, aber ich versuch's mal. Sonst meld ich mich noch mal im Forum.
 

Perplex

Mitglied
Ich hab doch ne eigene Klasse zum Bildladen angelegt, die folgende Form hat:

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JComponent;


public class PictureHandler extends JComponent {
	BufferedImage bi;
	

	public void showImage(File f) {
		try {
			bi = ImageIO.read(f);
			  //bi.setPreferedSize(new Dimension(bi.getWidth(),bi.getHeight()));
		}
		catch (Exception e) {
				System.out.println("Fehler beim Bildladen");
			}
			repaint();
			}
	
		public void paintComponent(Graphics g) {
			
			if (bi != null) {
				g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),Color.white,null);
			       
			}
		}
}

Dann würde ich in der Hauptklasse folgende Methode hinschreiben:
Code:
public void actionPerformed(ActionEvent event) {
		
		if (event.getSource()==b) {
	int returnVal = fc.showOpenDialog(Hand.this);
	ph.showImage(fc.getSelectedFile());
		}
	}

b ist ein JButton und ph ist ein PictureHandler-Objekt, dass ich in den Konstruktor der Hauptklasse geschrieben habe.

Wie ich das jetzt in deine Zeichenfunktion umsetzten soll ist mir noch nicht so ganz klar.
 

Wildcard

Top Contributor
Anstatt auf das JPanel das ich benutzt habe zu zeichnen kannst du einfach deinen PictureHandler nehmen.
Bei MouseClick rufst du dann eine Methode auf PictureHandler auf, in der du einen neuen Punkt übergibst der gezeichnet werden soll. So als Beispiel...
 

Perplex

Mitglied
Ich hab das ja so versucht, hat aber nicht geklappt. Vielleicht könntest Du's mir nochmal aufschreiben? Wenn Dir das aber jetzt zu umständlich ist, auch kein Problem. Du hast mir ja schon viel geholfen, wofür ich mich nochmal bedanken möchte!!
 

Wildcard

Top Contributor
Hab das jetzt nicht ausprobiert, aber etwa so.

Code:
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

/** 
* @author Wildcard 
* created at 02.05.2005 
*/ 
public class PaintOnComponent extends JFrame 
{ 
    PictureHandler drawPanel;


   public PaintOnComponent() 
   { 
       

       drawPanel = new PictureHandler();
       drawPanel.showImage("blupp");
      drawPanel.addMouseListener(new MouseAdapter() { 
         public void mouseClicked(MouseEvent e) 
         { 
            addPoint(e.getPoint());
            repaint(); 
         } 
       
      }); 
      drawPanel.setSize(500,500); 
       
      getContentPane().add(drawPanel); 
       
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(500,500); 
       
   } 
    
    
   /** 
    * @param args 
    */ 
   public static void main(String[] args) 
   { 
      PaintOnComponent p = new PaintOnComponent(); 
      p.setVisible(true); 

   } 

}


import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Event; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.image.BufferedImage; 

import java.io.File; 

import javax.imageio.ImageIO; 
import javax.swing.JComponent; 


public class PictureHandler extends JComponent { 
   BufferedImage bi; 
    
    private ArrayList points = new ArrayList();

    public void addPoint(Point p)
    {
        points.add(p);
    }

   public void showImage(File f) { 
      try { 
         bi = ImageIO.read(f); 
           //bi.setPreferedSize(new Dimension(bi.getWidth(),bi.getHeight())); 
      } 
      catch (Exception e) { 
            System.out.println("Fehler beim Bildladen"); 
         } 
         repaint(); 
         } 
    
      public void paintComponent(Graphics g) { 

        super.paintComponent(g);           
         if (bi != null) { 
            g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),Color.white,null); 


            g.setColor(Color.RED); 
            Iterator it = points.iterator(); 
            while (it.hasNext()) 
            { 
               Point p = (Point) it.next(); 
               g.fillOval(p.x,p.y,5,5); 
            }   
         } 
      } 
}
 

Perplex

Mitglied
Also ich hab das mal so versucht, hat aber nicht geklappt.Der Mouse- und der actionListener werden ja gar nicht von den entsprecheneden Klassen implementiert. Ausserdem gab's in folgendem Abschnitt Probleme:

Code:
 public PaintOnComponent() 
   { 
         drawPanel = new PictureHandler(); 
       drawPanel.showImage("blupp"); 
      drawPanel.addMouseListener(new MouseAdapter() { 
         public void mouseClicked(MouseEvent e) 
         { 
            addPoint(e.getPoint()); 
            repaint(); 
         }

Es wird angezeigt, dass die Methode showImage für ein String-Argument nicht anwenbar ist und dass die Methode addPoint nicht definiert ist, obwohl sie ja in der pictureHandler-Klasse definiert ist.

Hab das jetzt folgendermassen:
Code:
import java.awt.BorderLayout;
import java.awt.Color; 
import java.awt.Container;
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame; 
import javax.swing.JPanel;


public class PaintOnComponent extends JFrame implements ActionListener {
 
  private  PictureHandler drawPanel; 
private JFileChooser fc;
 private JButton b;

public PaintOnComponent() 
   { 
	b = new JButton ( "Button");    
	b.addActionListener( this);
	Container c = getContentPane();
	c.setLayout (new BorderLayout(3,3));
	c.add(b,BorderLayout.NORTH);
	fc = new JFileChooser();
 	drawPanel = new PictureHandler(); 
       drawPanel.showImage("blupp"); 
      drawPanel.addMouseListener(new MouseAdapter() { 
         
      	public void mouseClicked(MouseEvent e) 
         { 
            addPoint(e.getPoint()); 
            repaint(); 
         } 
        
      }); 
      drawPanel.setSize(500,500); 
        
      getContentPane().add(drawPanel,BorderLayout.CENTER); 
        
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(500,500); 
        
   } 
    
public static void main(String[] args) 
   { 
      PaintOnComponent p = new PaintOnComponent(); 
      p.setVisible(true); 
}

public void actionPerformed(ActionEvent event) {
	if (event.getSource()==b) {
		int returnVal = fc.showOpenDialog(PaintOnComponent.this);
		drawPanel.showImage(fc.getSelectedFile());	// TODO Auto-generated method stub
	
} 

}
}

Könntest Du mir dann den kompletten Code nochmal in korrigierter Fassung aufschreiben wenn's nicht zu viel verlangt ist? So wie ich's jetzt habe, fehlt doch nicht mehr viel, oder?
 

Wildcard

Top Contributor
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;

/** 
* @author Wildcard 
* created at 02.05.2005 
*/ 
public class PaintOnComponent extends JFrame 
{ 
    PictureHandler drawPanel; 


   public PaintOnComponent() 
   { 
        

       drawPanel = new PictureHandler(); 
       drawPanel.showImage(setz hier irgendein File ein); 
      drawPanel.addMouseListener(new MouseAdapter() { 
         public void mouseClicked(MouseEvent e) 
         { 
            drawPanel.addPoint(e.getPoint()); 
            repaint(); 
         } 
        
      }); 
      drawPanel.setSize(500,500); 
        
      getContentPane().add(drawPanel); 
        
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(500,500); 
        
   } 
    
    
   /** 
    * @param args 
    */ 
   public static void main(String[] args) 
   { 
      PaintOnComponent p = new PaintOnComponent(); 
      p.setVisible(true); 

   } 

} 

class PictureHandler extends JComponent { 
   BufferedImage bi; 
    
    private ArrayList points = new ArrayList(); 

    public void addPoint(Point p) 
    { 
        points.add(p); 
    } 

   public void showImage(File f) { 
      try { 
         bi = ImageIO.read(f); 
           //bi.setPreferedSize(new Dimension(bi.getWidth(),bi.getHeight())); 
      } 
      catch (Exception e) { 
            System.out.println("Fehler beim Bildladen"); 
         } 
         repaint(); 
         } 
    
      public void paintComponent(Graphics g) { 

        super.paintComponent(g);            
         if (bi != null) { 
            g.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),Color.white,null); 

         }
         g.setColor(Color.RED); 
         Iterator it = points.iterator(); 
         while (it.hasNext()) 
         { 
            Point p = (Point) it.next(); 
            g.fillOval(p.x,p.y,5,5); 
         }    
          
      } 
}
 

Perplex

Mitglied
Wenn ich showImage aufrufe, erwartet die Methode ein File als Paramter, aber da wo ich sie implementiere, schreibe ich ja (File f) hin. f ist das das Bild, was ich mir in dem Dialog-Fenster auswähle und das dann geladen werden soll. Dann muss ich ja schreiben:
Code:
 drawPanel.showImage(fc.getSelectedFile());

aber diese Zeile hab ich doch schon in die actionPerformed-Methode geschrieben. Muss ich dann diese Methode weglassen? Aber ich will doch, dass beim Drücken des Buttons b ein Dialog-Fenster erscheint, wo mir das Bild, dass ich laden will, aussuchen kann und dass dann geladen wird.Dann soll man auf dem geladenen Bild Punkte einzeichnen können. Irgendwie ist da jetzt bei mir Chaos. Aber der Ansatz mit dem BorderLayout ist doch korrekt, oder? Ich will das Bild ins Zentrum setzten und den Button oben hin.

Code:
public PaintOnComponent() 
   { 
   b = new JButton ( "Button");    
   b.addActionListener( this); 
   Container c = getContentPane(); 
   c.setLayout (new BorderLayout(3,3)); 
   c.add(b,BorderLayout.NORTH); 
   fc = new JFileChooser(); 
   drawPanel = new PictureHandler(); 
       drawPanel.showImage("blupp"); 
      drawPanel.addMouseListener(new MouseAdapter() { 
          
         public void mouseClicked(MouseEvent e) 
         { 
            addPoint(e.getPoint()); 
            repaint(); 
         } 
        
      });

Hab's jetzt so:
Code:
 public class PaintOnComponent extends JFrame implements ActionListener {
 
  private  PictureHandler drawPanel; 
private JFileChooser fc;
 private JButton b;

public PaintOnComponent() 
   { 
	b = new JButton ( "Button");    
	b.addActionListener( this);
	Container c = getContentPane();
	c.setLayout (new BorderLayout(3,3));
	c.add(b,BorderLayout.NORTH);
	fc = new JFileChooser();
 	drawPanel = new PictureHandler(); 
       drawPanel.showImage(fc.getSelectedFile()); 
      drawPanel.addMouseListener(new MouseAdapter() { 
         
      	public void mouseClicked(MouseEvent e) 
         { 
            drawPanel.addPoint(e.getPoint()); 
            repaint(); 
         } 
        
      }); 
      drawPanel.setSize(500,500); 
        
      getContentPane().add(drawPanel,BorderLayout.CENTER); 
        
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(500,500); 
        
   } 
    
public static void main(String[] args) 
   { 
      PaintOnComponent p = new PaintOnComponent(); 
      p.setVisible(true); 
}

public void actionPerformed(ActionEvent event) {
	if (event.getSource()==b) {
		int returnVal = fc.showOpenDialog(PaintOnComponent.this);
		drawPanel.showImage(fc.getSelectedFile());	// TODO Auto-generated method stub
	
} 

}
}

Das ist doch falsch, oder?
 

Perplex

Mitglied
Sorry!!! ES FUNKTIONIERT!!!! Hatte es gar nicht getestet.
Aber jetzt ist alles in Ordnung! Klappt jetzt wunderbar! Nochmal ganz herzlichen Dank für die Hilfe!!
Ich muss noch ein paar weitere Funktionen in das Programm einbauen.Wenn ich da wieder Probleme bekomme( was unter Garantie so sein wird :)), kann ich Dich dann wieder mit Fragen belästigen? :)
 

raffnix

Bekanntes Mitglied
Hallo ich möchte hier auch mal eine Frage stellen.
Ist eher grundsätzlich zu punkten und bildern.

fillOval erwartet 2 punkte x und y.

bei einmal clicken müssten ja 2 Koordinaten gespeichert werden. hier ja in einer liste.

da steht:
Code:
addPoint(e.getPoint());

das sieht aber so aus , das bei jedem klick ein punkt gespeichert wird.

wie wird das dann hier realisiert??

Code:
 Point p = (Point) it.next();
            g.fillOval(p.x,p.y,5,5);

kann mir das jemand erklären???(für dumme bitte :wink:)
 

Wildcard

Top Contributor
@raffnix
mit addPoint wird ein neuer Punkt in die Liste eingefügt.
Beim zeichnen läuft ein iterator über die Liste, und jeder Punkt wird gezeichnet.
Verstehe deine Frage nicht ganz ???:L
 

raffnix

Bekanntes Mitglied
Nun ja .
es wird ja ein punkt gezeichnet wenn man auf das bild klickt richtig??

das läuft so.
klick. punkt in liste speichern. draw aufrufen und punkt aus der liste zuteilen.

aber für einen punkt braucht man ja 2 koordinaten. x. y
speichert addPoint. nun beide koordinaten ??
und woher weiss ich welche koordinate x und welxhe y ist??
 

Wildcard

Top Contributor
e.getPoint liefert ein Point Objekt.
Point Objekte bestehen aus einer x und einer y Koordinate :D
 

raffnix

Bekanntes Mitglied
Ahh . nun ist alles klar..
dachte schon hier wird die quadratur des kreises vollzogen.(denk ich zwar auch oft aber hier ist es wohl doch nicht so)
nun bin ich beruhigt.
 

Perplex

Mitglied
Ich hab folgendes Problem:
Wenn ich zwei Punkte eingezeichnet habe, soll automatisch ein Strich zwischen diesen beiden Punkten gezeichnet werden.
Ich speichere die Punkte doch in einem Array. Dann müsste ich doch drawLine den ersten und den zweiten Punkt in dem Array übergeben, oder? Dazu müsste ich doch die mouseReleased-Methode überschreiben?

Wenn das Array so aussieht:
Code:
 private ArrayList points = new ArrayList();

dann müsste ich doch etwas wie :
Code:
event.drawLine(points[0].getX(), points[0].getY(),points[1].getX(),points[1].getY())

schreiben, oder?

Soll ich dann in der PictureHandler-Klasse einen MouseListener implementieren und das dann in der mouseReleased-Methode reinschreiben? Auf diese Weise klappt es aber nicht ganz.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Zugriff auf Bildschirmobjekte aus einem anderen Programm AWT, Swing, JavaFX & SWT 6
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
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
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
F JavaFX JavaFX - Hintergrundmusik in einem seperatem Task/Service AWT, Swing, JavaFX & SWT 6
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Dreieck in einem Kreis??? AWT, Swing, JavaFX & SWT 1
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
J Swing unterschiedliche Inhalte in einem JFrame AWT, Swing, JavaFX & SWT 3
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
S Punkt finden der in einem Shape liegt..? AWT, Swing, JavaFX & SWT 11
A Swing Externe Klassen aufrufen und in einem bereits vorhandenen Container einfügen AWT, Swing, JavaFX & SWT 0
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
J RadioButton-Gruppe in Kombination mit einem Button AWT, Swing, JavaFX & SWT 6
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
V Fenster in einem Fenster anordnen AWT, Swing, JavaFX & SWT 7
E Alles in einem Fenster AWT, Swing, JavaFX & SWT 5
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben