Δείτε εδώ τα πιο πρόσφατα μηνύματα από όλες τις περιοχές συζητήσεων, καθώς και όλες τις υπηρεσίες της AcroBase. H εγγραφή σας είναι γρήγορη και εύκολη. |
|
|
|
Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
|
#2
|
|
|||
.... |
#3
|
|
||||
Ναναι καλα ο ανθρωπος τοτε!
Λοιπον, αυτο εδω οπτικοποιει μια συναρτηση. Ειχα προσθεσει μια μπαρα η οποια οταν την πειραζα αλλαζε τη συχνοτητα της καμπυλης και οταν δουλεψε χαρηκα παρα πολυ! Κατα τον ιδιο τροπο προσθεσα και αλλη μπαρα η οποια θα αλλαζε το υψος της καμπυλης. Και αυτο ειναι που δε λειτουργει. Το παρακατω ειναι ενα snapshot των δοκιμων που εκανα (το τελευταιο χρονολογικα που βρηκα) και δε θυμαμαι σε τι σταδιο το ειχα αφησει Κώδικας:
import java.applet.*; import java.awt.*; import java.awt.event.*; public class program extends Applet implements AdjustmentListener{ int fwidth, fheight,i,a; private Scrollbar hor,ver; public void init() { Dimension appletSize=this.getSize(); fwidth=appletSize.width-10; fheight=appletSize.height-10; hor=new Scrollbar(Scrollbar.HORIZONTAL,0,200,0,255); ver=new Scrollbar(Scrollbar.VERTICAL,0,200,0,255); add(hor); add(ver); hor.addAdjustmentListener(this); ver.addAdjustmentListener(this); } public void paint(Graphics g) { int i, y1, y11; g.drawLine(0,fheight/2,fwidth, fheight/2); y1=calcFunct(0); for (i=0 ; i < fwidth ; i++) { y11=calcFunct(i+1); g.drawLine(i,y1,i+1,y11); y1=y11; } } private int calcFunct(int xcor) { double xmin=-3.14-i; double xmax=3.14+i; double ymin=-1.0-a; double ymax=1.0+a; double x,y; int ycor; x=(xcor*(xmax-xmin)/fwidth)+xmin; y=Math.sin(x); ycor=(int)(((y-ymin)*fheight)/(ymax-ymin)); ycor=fheight-ycor; return ycor; } public void adjustmentValueChanged (AdjustmentEvent e,r){ i=e.getValue(); a=r.getValue(); repaint(); } }
__________________
Υπάρχουν σε όλα δύο απόψεις... Αυτή που λέω εγώ, και η σωστή! Τελευταία επεξεργασία από το χρήστη Gildor : 31-05-08 στις 16:28 |
#4
|
|
||||
Το paint() method σου σταματάει βάρβαρα στη μέση της πρώτης γραμμής ενός for loop, και λείπει όλο το loop και αρκετά ακόμα συντακτικά κομμάτια του υπόλοιπου class. Το πρόγραμμα δεν υπάρχει περίπτωση να κάνει parse ως έχει.
__________________
www.bedroomlan.org |
#5
|
|
||||
Φυσικα και δεν ειναι αυτο ολο το προγραμμα (δεν ειμαι ΤΟΣΟ ασχετος ) απλα φαινεται η χαρακτηρας < δημιουργουσε καποιο προβλημα στο [code] και διεκοπτε το κειμενο
Τωρα που αφησα κενο, φαινεται ολος ο κωδικας
__________________
Υπάρχουν σε όλα δύο απόψεις... Αυτή που λέω εγώ, και η σωστή! |
#6
|
|
||||
Εμένα μου δουλεύει πάντως, μετά από μια μικρή αλλαγή, αφού κοίταξα τη σχετική online τεκμηρίωση (δεν ασχολούμαι πολύ με Java):
Κώδικας:
public void adjustmentValueChanged (AdjustmentEvent e){ i=e.getValue(); //a=r.getValue(); repaint(); } Θα επανέλθω με μια-δυο διορθώσεις ώστε να δουλεύει σωστά, απ'όσο καταλαβαίνω.
__________________
www.bedroomlan.org |
#7
|
|
||||
Να το «πειραγμένο» πρόγραμμα. Οι αλλαγές, απ'όσο μπορώ να θυμηθώ από χτες:
Άλλαξα τα ονόματα των attributes i, a στα κάπως πιο περιγραφικά xrange, yrange. Άλλαξα το 3.14 σε Math.PI που είναι ο μόνος σωστός τρόπος να αναφερθείς στο π. Όλο σου το πρόγραμμα είναι ένας AdjustmentListener ο οποίος δέχεται σχετικά events κι από τα δύο Scrollbars. Η αρχική έκδοση δεν είχε κανένα τρόπο να διαχωρίσει μεταξύ των δύο, οπότε κάθε αλλαγή στο ένα έβαζε την τιμή του αλλαγμένου scrollbar και στο i και στο a. Κοιταξα την τεκμηρίωση της Java (δεν τα ξέρω αυτά τα πράγματα του σατανά) και βρήκα το AdjustmentEvent.getAdjustable() method που επιστρέφει ένα reference στο Adjustable (=Scrollbar) από το οποίο προήλθε το event. Αν το event είναι από το οριζόντιο Scrollbar, με ένα if αλλάζουμε το xrange. Αντίστοιχα και με το yrange. Αυτή είναι η μόνη ουσιαστική διαφορά στο πρόγραμμα. Προσέθεσα κενά όπου χρειάζονται για να βελτιώσουν την αναγνωσιμότητα του κώδικα. Είναι πιο κοντά σ'αυτό που ήθελες να κάνει τώρα; Κώδικας:
import java.applet.*; import java.awt.*; import java.awt.event.*; public class program extends Applet implements AdjustmentListener { int fwidth; int fheight; int xrange; int yrange; Scrollbar hor, ver; public void init() { Dimension appletSize = this.getSize(); fwidth = appletSize.width -10; fheight = appletSize.height - 10; hor = new Scrollbar (Scrollbar.HORIZONTAL, 0, 200, 0, 255); ver = new Scrollbar (Scrollbar.VERTICAL, 0, 200, 0, 255); add (hor); add (ver); hor.addAdjustmentListener (this); ver.addAdjustmentListener (this); } public void paint(Graphics g) { int i, y1, y11; g.drawLine (0, fheight/2,fwidth, fheight/2); y1=calcFunct (0); for (i = 0; i < fwidth; i++) { y11=calcFunct (i + 1); g.drawLine (i, y1, i + 1, y11); y1 = y11; } } private int calcFunct(int xcor) { double xmin = -Math.PI - xrange; double xmax = Math.PI + xrange; double ymin = -1.0 - yrange; double ymax = 1.0 + yrange; double x,y; int ycor; x = (xcor * (xmax - xmin) / fwidth) + xmin; y = Math.sin (x); ycor = (int)(((y - ymin) * fheight) / (ymax - ymin)); ycor = fheight - ycor; return ycor; } public void adjustmentValueChanged (AdjustmentEvent e) { Adjustable which = e.getAdjustable(); // Horizontal changed. if (which == hor) xrange = e.getValue(); // Vertical changed. else if (which == ver) yrange = e.getValue(); repaint(); } }
__________________
www.bedroomlan.org |
Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες) | |
|
|