hi, versuche ein programm zu schreiben, welches mir durch klicken in ein Fenster dreiecke zeichnet.
Also ich klicke 3mal beliebig in ein Fenster und dann zeichnet er mit durch die 3 gegebenen Punkte ein Dreieck. weiterhin möchte ich dann weitere dreiecke so zeichnen und später soll er mir das mit dem größten flächeninhalt farbig markieren.
hab schonmal nen code den ich anhänge..
mein problem ist es unter graphics gibts die drawPolygon Methode welche int[] verlangt. ich aber durch den mausklick int erhalte und die nicht in das array int[]xPoints bzw int[]yPoint renschreiben kann...
siehe public void mousePressed(MouseEvent e)... möchte die drei mausklicks in der forschleife abfangen und nach 3 klicken wieder leeren. dann kommen ja wieder 3 neue klicks für das neue dreieck... usw....
Also ich klicke 3mal beliebig in ein Fenster und dann zeichnet er mit durch die 3 gegebenen Punkte ein Dreieck. weiterhin möchte ich dann weitere dreiecke so zeichnen und später soll er mir das mit dem größten flächeninhalt farbig markieren.
hab schonmal nen code den ich anhänge..
mein problem ist es unter graphics gibts die drawPolygon Methode welche int[] verlangt. ich aber durch den mausklick int erhalte und die nicht in das array int[]xPoints bzw int[]yPoint renschreiben kann...
siehe public void mousePressed(MouseEvent e)... möchte die drei mausklicks in der forschleife abfangen und nach 3 klicken wieder leeren. dann kommen ja wieder 3 neue klicks für das neue dreieck... usw....
Code:
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Iterator;
import java.util.Vector;
public class zeichenprog extends Frame implements MouseListener{
int height = 600;
int width = 600;
public zeichenprog() {
setSize(width, height);
setVisible(true);
addMouseListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
/**
*
*/
private static final long serialVersionUID = 1L;
private Vector elements = new Vector();
private interface Primitiv {
void paint(Graphics g);
}
private class Point implements Primitiv {
private double x,y;
int width=1, height=1;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void paint(Graphics g) {
g.setColor(Color.cyan);
g.drawOval((int) x, (int)y, width, height);
}}
public void point(int x, int y) {
elements.add(new Point(x, y));
}
private class Dreieck implements Primitiv
{
private int[] XWerte = new int[3];
private int[] YWerte = new int[3];
int nPoints = 3;
public Dreieck(int [] XWerte, int[] YWerte)
{
this.XWerte= XWerte;
this.YWerte= YWerte;
}
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawPolygon(XWerte, YWerte, nPoints);
}}
public void dreieck(int []XWerte, int[] YWerte)
{
elements.add(new Dreieck( XWerte, YWerte ));
}
public void allesNeu() {
repaint();
}
public void paint(Graphics g) {
for (Iterator iter = elements.iterator(); iter.hasNext();){
((Primitiv) iter.next()).paint(g);
}
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
if (e.getButton() == MouseEvent.BUTTON3)
point(e.getX(), e.getY());
if (e.getButton() == MouseEvent.BUTTON1)
point(e.getX(), e.getY());
for (int i = 0;i<3; i++){
dreieck(e.getX(),e.getY());
}
allesNeu();
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
zeichenprog zeichne = new zeichenprog();
}
}