Προς το περιεχόμενο

Πρόβλημα με java !!!!


SmaTheGreek

Προτεινόμενες αναρτήσεις

Δημοσ.

Ξεκινώντας... Φτιάχνω μία μικρή εφαρμογή στη java

Έχω φτιάξει ένα μικρό user interface με το swing και αυτό που θέλω είναι να ζωγραφίζω κύκλους κλικάροντας

 

Ο κώδικας που κρατά τα κέντρα των κύκλων είναι ο ακόλουθος

 

public void AddVertex(int x, int y)

{

Vertices=new Point[Vertices.length+1];

Vertices[Vertices.length-1]=new Point(x,y);

}:

 

(όπου Vertices public πίνακας τύπου Point που κρατά τα κέντρα των κύκλων)

 

Η συνάρτηση AddVertex καλείτε από την:

 

 

public void mouseClicked(MouseEvent e)

{

shape.AddVertex(e.getX(),e.getY());

if(shape.Vertices.length-2>=0)

System.out.println(shape.Vertices[shape.Vertices.length-2]);

}

 

Η μέθοδος mouseClicked υλοποιείται από τη κλάση μου και ανήκει στο Interface MouseListener

 

Τελικώς ζωγραφίζω τους κύκλους ως εξής...

 

for(int i=0;i<shape.Vertices.length;i++)

{

 

comp2D.setColor(Color.BLUE);

if(shape.Vertices!=null)

 

comp2D.drawArc(shape.Vertices.x,shape.Vertices.y,10,10,0,360);

}

 

Ο παραπάνω κώδικας με το for loop υπάρχει εντός της paintComponent(Graphics comp)

η οποία υλοποιείται από τη κλάση μου

 

Και εδώ είναι το πρόβλημα... Αν από το τελευταίο κομμάτι κώδικα αφαιρέσω τη γραμμή if(shape.Vertices!=null) παίρνω μήνυμα λάθους τη δεύτερη φορά που γίνεται κλικ.Αυτό σημαίνει ότι το τελευταίο στοιχείο του vertices δεν είναι null αλλά όλα τα προηγούμενα έχουν γίνει null για κάποιον περίεργο λόγο

Από την άλλη αν αφήσω ανέπαφη τη γραμμή (shape.Vertices!=null) τότε θα εμφανιστεί μόνο ο τελευταίος κύκλος στο σημείο που έκανε click το ποντίκι....

 

Έχει κανείς κάποια ιδέα ???

 

 

Ανεβάζω και ένα screenshot....

post-133279-129063070528_thumb.jpg

Δημοσ.

Βασικά θα με βοηθούσε περισσότερο αν μπορούσες να μου δώσεις κάποιες ιδέες από αυτά που έχω γράψει...

 

---------- Προσθήκη στις 18:22 ---------- Προηγούμενο μήνυμα στις 18:19 ----------

 

Τελικά το πρόβλημα λύθηκε αντικαθιστώντας τη δομή δυναμικού πίνακα vertices με μια ArrayList

 

Ευχαριστώ!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...