deker Δημοσ. 10 Οκτωβρίου 2006 Δημοσ. 10 Οκτωβρίου 2006 uparxei kapoios tropos na mporesw na kalesw thn methodo paintComponent mesa apo mia methodo actionPerformed enos perivallontos ActionListener wste na dhmiourghsw ta grafika pou thelw px me ena JButton?
djapal Δημοσ. 11 Οκτωβρίου 2006 Δημοσ. 11 Οκτωβρίου 2006 Λίγο μπερδεμένη κατάσταση.Αν δεν έχεις πρόβλημα να δώσεις λίγο sample code να μας πεις τι ακριβώς θες να κάνεις, ίσως σε βοηθήσουμε περισσότερο. Πάντως δε μου ακούγεται κάτι το οποίο δε μπορεί να γίνει. Αν περαστεί το Object λογικά θα μπορείς. Αλλά όπως σου είπα... Δώσε κώδικα (αν δεν έχεις πρόβλημα βέβαια )
deker Δημοσ. 11 Οκτωβρίου 2006 Μέλος Δημοσ. 11 Οκτωβρίου 2006 Μιλάω για κάτι απλό. Απλά να υπάρχει ένα κουμπί το οποίο να μπορεί να χειρίζεται γραφικά, για π.χ.: import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Graphics; import java.awt.Color; import javax.swing.JButton; public class Grap extends JPanel implements ActionListener { // αρχή της κλάσης Grap private JButton designGraf; public Grap() { // αρχή του σώματος της Grap() designGrapButton = new JButton("design"); add(designGraf); designGrapButton.addActionListener( //για τον χειρισμό new ActionListener() { //ανώνυμη εσωτερική κλάση public void actionPerformed(ActionEvent event) { // εδώ θέλω να μπαίνουν οι χειρισμοί // για να σχεδιάζω τα γραφικά που θέλω } }// τέλος ανώνυμης εσωτερικής κλάσης ); } // τέλος του σώματος της Grap() } // τέλος της κλάσης Grap Αυτό είναι ένα παράδειγμα κώδικα. Εγώ αυτό που θέλω είναι μέσα από το κουμπί να μπορώ να σχεδιάσω ένα γραφικό της επιλογής μου. Προσπάθησα να καλέσω την paintComponet (φυσικά δημιουργώντας μια αντίστοιχη μέθοδο μέσα στην κλάση) μέσα από την actionPerformed η και να δημιουργήσω ένα private Graphics αντικείμενο στην αρχή των δηλώσεων της κλάσης ώστε να μπορώ να το χειριστώ μέσα στην actionPerformed αλλά πάλι δεν κάνει τίποτα. Έχω βάλει ακόμα και ένα αντικείμενο Timer μέσα στο σώμα της μεθόδου δημιουργίας το οποίο μπορεί να καλεί την paintComponent ανά κάποια χρονικά διαστήματα με την κλήση της repaint() στο σώμα της actionPerformed. Έχω ψάξει στο google αλλά δεν έχω βρει κάτι το οποίο να μου δίνει λύση. Αν γνωρίζετε κάτι πείτε το και σε εμένα γιατί έχω κολλήσει και δεν το θεωρώ τόσο δύσκολο πια και αποθαρρύνομαι που δεν μπορώ να βρω τίποτα.Μέχρι και στη σελίδα της Sun δεν μπόρεσα να βρω τίποτα. Ευχαριστώ για το χρόνο σας.
djapal Δημοσ. 11 Οκτωβρίου 2006 Δημοσ. 11 Οκτωβρίου 2006 Λογικά παίρνεις τα γραφικά από το πάνελ (g ας πούμε) και μετά κάνεις ότι θες Graphics2D g2 = (Graphics2D) g; BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB); Graphics2D big = bi.createGraphics(); big.setColor(Color.blue); big.fillRect(0, 0, 5, 5); big.setColor(Color.lightGray); big.fillOval(0, 0, 5, 5); Rectangle r = new Rectangle(0,0,5,5); g2.setPaint(new TexturePaint(bi, r)); Τώρα δε θυμάμαι αν πρέπει να το βάλεις στο paintComponent αυτό ή αν δουλεύει και εκεί που θες. Λογικά θα δουλεύει. Κάνε και καμιά ανανέωση και κάτι θα γίνει. Αν κατάλαβα καλά βέβαια...!
Bspus Δημοσ. 11 Οκτωβρίου 2006 Δημοσ. 11 Οκτωβρίου 2006 Δε χανεις τιποτα να δεις και τα demos που εχει το jdk αν δεν το εχεις κανει ηδη. Θυμαμαι καπου οτι ειχα δει ενα applet που σε αφηνει να ζωγραφιζεις ευθειες και ελευθερες γραμμες. Με καποιες μικροαλλαγες δεν πρεπει να ειναι δυσκολο να το κανεις να ζωγραφιζει οποιοδηποτε βασικο σχημα. Κατι σαν ενα πρωτογονο windows paint. Δεν ειναι ακριβως αυτο που θες αφου εσυ θες να πατας κουμπι για να κανεις τη ζωγραφια αλλα ισως σου δωσει ιδεες.
deker Δημοσ. 11 Οκτωβρίου 2006 Μέλος Δημοσ. 11 Οκτωβρίου 2006 Ευχαριστώ για το χρόνο σας παιδιά. Τελικά βρήκα την απάντηση που ήθελα στο http://www.jhug.gr. Δεν είναι τελικά τόσο περίπλοκο. djapal καλή η ιδέα σου, την δοκίμασα αλλά δεν χρειάζομαι γραφικά 2D εδώ (ναι, πρέπει να βάλεις τον κώδικα στην paintComponent). Η λύση είναι πολύ πιο απλή. Thanks anyway!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.