ΑΛΛΗΛΕΠΙ ΡΑΣΗ ΑΝΘΡΩΠΟΥ ΜΗΧΑΝΗΣ 3 ΕΡΓΑΣΤΗΡΙO jframe jpanel1 jpanel2 1. Θα δημιουργήσετε μια jframe φόρμα με τίτλο «Αγορά Σπιτιού» Αν θέλετε να αλλάξτε το φόντο της σε κίτρινο, γίνεται μόνο προγραμματιστικά (μιας και αλλάζεται το Backgrund του CntentPane π.χ. getcntentpane().setbackgrund(clr.yellow); 2. Η φόρμα έχει δυο jpanel, ένα jbuttn («Υπολογισμός Δόσης») και δυο jlabel («Δόση ανά μήνα» και «0») Πατήστε τις Τα jpanel, θα έχουν brder TitledBrder µε τίτλο «Στοιχεία ανείου» και «ιαθέσιµα Σπίτια» αντίστοιχα. Tα fnts θα είναι της επιλογής σας. Τα backgrund για τα δυο jpanel θα είναι της επιλογής σας προσέξτε µόνο την αντίθεση χρωµάτων µε το backgrund του jframe σας (γενικά επιλέγετε ανοιχτά χρώµατα). VK -30/10/2016 - [1]
3. Το 1 ο jpanel θα έχει, τρία jlabel και τρία jtextfield : 4. Το 2 ο jpanel θα έχει τρία jradibuttn που θα ανήκουν στο ίδιο grup (πρσθέτοντας ένα buttngrup) και δύο jlabel. H ομαδοποίηση των RadiButtns είναι επιθυμητή, ώστε όταν ένα RadiButtn επιλέγεται (selected), όλα τα άλλα από την ομάδα του να μην επιλέγονται. 2 jlabel Για να αλλάξτε το όνομα του buttngrup1 σε grupaki : Δεξί κλικ πάνω στο buttngrup1 και Change Variable Name Για να προσθέστε το buttngrup πρέπει να το σύρετε πάνω στην φόρμα. Ονομάστε το grupaki 5. Tα jradibuttn θα έχουν τις παρακάτω ιδιότητες: Θα έχουν buttngrup το grupaki που µόλις δηµιουργήσαµε Θα έχουν brder EtchedBrder µε πλαίσιο (BrderPainted) εν θα έχουν κείµενο (text άδειο) VK -30/10/2016 - [2]
Θα περιέχυν µόνο εικόνα -χωρίς κείµενο-, που όταν πατιέται (pressed) ή επιλέγεται(selected) ή φωτίζεται προσωρινά (rllvered) η εικόνα θα αλλάζει. Οι αρχικές εικόνες και οι pressed είναι αντίστοιχα: Αρχική εικόνα Επιλεγµένη εικόνα jradibuttn1 ChatswrthHuse.jpg ChatswrthHusePressed.jpg jradibuttn2 queen_huse.jpg queen_husepressed.jpg jradibuttn3 white_huse.jpg white_husepressed.jpg Οι εικόνες παρέχονται στο icns3.rar και μπορούν μέσω της ιδιότητας icn των jradibuttn, να εισαχθούν (imprt αν θέλουμε) μέσα στο prject. Οι 6 εικόνες εισήχθηκαν μέσα στο prject, ώστε μετά μπορούν να επιλεχθούν Ένα icn μπορεί να βρίσκεται ή και μέσα (Imprt) στο prject ή σε μια θέση στο δίσκο ( προγραμματιστικά θα είχαμε ImageIcn myicn= new ImageIcn( c:/temp/enaicn.gif ) // ορίζεται σε μια θέση στο C: jradiqueen.seticn(newjavax.swing.imageicn(getclass().getresurce("enaicn.jpg")));// μέσα στο Prject) 6. Όταν το ένα radi buttn (μια εικόνα) πατιέται, πρέπει η εικόνα να αλλάζει σε Pressed (ενώ οι εικόνες από τα άλλα δυο radibuttn δεν αλλάζουν). Οι διαφορετικές εικόνες (που έχουν εισαχθεί μέσα στο Prject) μπορούν να ανατεθούν με τις ιδιότητες icn pressedιcn rllvericn rllverselectedicn selectedselectedicn VK -30/10/2016 - [3]
προγραμματιστικά private vid jradibuttn1 ActinPerfrmed (java.awt.event.actinevent evt) { jradibuttn1.seticn(new javax.swing.imageicn(getclass().getresurce("chatswrthhusepressed.jpg"))); jradibuttn2.seticn(new javax.swing.imageicn(getclass().getresurce("queen_huse.jpg"))); jradibuttn3.seticn(new javax.swing.imageicn(getclass().getresurce("white_huse.jpg"))) } και παρόμοια για τα άλλα δύο 7.1 Στο κάτω μέρος του 2 ου jpanel θέλουμε να αλλάζει η τιμή στο jlabelprice, με το γεγονός του κουμπιού ItemStateChanged, ανάλογα με το επιλεγμένο σπίτι σε 3 000 000 για το 1 ο σπίτι 5 000 000 για το 2 ο σπίτι και 4 000 000 για το 3 ο σπίτι. jlabelprice 7.2 Στα radi buttn να οριστεί και στα Events MuseEntered και MuseExited να αλλάζει η τιμή (στο MuseExited να μπαίνει η αμέσως προηγούμενη τιμή, άρα απατείται μεταβλητή: private int price;) 7.3 Oρίστε το κουμπί υπολογισμό δόσης //προγραμματισμός κουμπιού private vid jbuttn1actinperfrmed(java.awt.event.actinevent evt) { int kefalai=0, epitki = 0,diarkeia=0,danei=0; // οι μεταβλητές κειμένου θα μετατραπούν σε ακέραιους αλλά //AΠΑΙΤΕΙΤΑΙ και ΕΛΕΓΧΟΣ ΚΕΝΟΥ ΚΕΙΜΕΝΟΥ / Η ΟΧΙ if (! jtextkefalai.gettext().isempty() ) kefalai =Integer.valueOf(jTextKefalai.getText()); //.. epitki = Integer.valueOf(jTextEpitki.getText()); jlabel2 Δάνειο = ΤιμήΣπιτιού Κεφάλαιο VK -30/10/2016 - [4]
diarkeia = Integer.valueOf(jTextDiarkeia.getText()); Δάνειο = ΤιμήΣπιτιού Κεφάλαιο Τόκος = Δάνειο * Επιτόκιο / 100 danei = price - kefalai; duble plirte= danei + (danei* epitki)/100; duble dsi; Δόση=(Δάνειο + Τόκος )/ ΔιάρκειαΔόσεων if (diarkeia==0) jlabel2.settext( "ERROR"); //ετικέτα με το υπολογιστέο ποσό ανά μήνα else { dsi= plirte/diarkeia; //ΔΟΣΗ jlabel2.settext(string.valueof(dsi)); } } 7.4 Oρίστε 7 Συντομεύσεις <Alt> : K,E,D,Y (Kεφάλαιο, Επιτόκιο, Διάρκεια, Υπολογισμός) και 1,2,3 (για τις τρεις εικόνες) Μια συντόμευση ενεργοποιείται με το key <Αlt> και ένα άλλο γράμμα/key. Έτσι με < Αlt><Υ> θα ενεργοποιείται το κουμπί Υπολογισμός δόσης. Αυτό γίνεται με την ιδιότητα mnemnic (στο κουμπι) και displayedmnemnic (στα label) Η υπογράμμιση δεν μπορεί να γίνει στα TextField, αλλά στα αντίστοιχα Label (οπότε πρέπει να γίνει και η αντιστοίχιση) π.χ. για το Κεφάλαιο θέτουμε στην ετικέτα Κεφάλαιο τις ιδιότητες: και π.χ. για το κουμπί Υπολογισμού της Δόσης: 1 Υ αγγλικό VK -30/10/2016 - [5]
ή/και προγραμματιστικά jbuttn1.setmnemnic('y'); Θα υπογραμμίσουμε το Υ χρησιμοποιώντας html μορφοποίηση: html= "<html><sup><u>y</u>πολογισμός Δόσης</sup></html> "; jbuttny.settext(html); <sup> Superscript text appears half a character abve the nrmal line. <u> Underline Element renders text with an underline Και οι συντομεύσεις στα jlabel που πρέπει να συνδυαστούν με jtext μέσω της ιδιότητας labelfr Κ αγγλικό jlabelk.setdisplayedmnemnic('k'); jlabelk.setlabelfr(jtextkefalai); String html = "<html><sup><u>k</u>εφάλαιο</sup></html> "; jlabelk.settext(html); VK -30/10/2016 - [6]