ΑΛΛΗΛΕΠΙ ΡΑΣΗ ΑΝΘΡΩΠΟΥ ΜΗΧΑΝΗΣ 6 o ΕΡΓΑΣΤΗΡΙO H φόρµα µε τίτλο «ΜΑΚΗS, θα περιέχει ένα ΤabbedPane µε 2 Καρτέλες. Στο 1 ο tab θα επιλέγεις τι θα πάρεις, και στο 2 ο θα τυπώνεται ο λογαριασμός σου 1. Θα σχεδιάσετε μια νέα jframe φόρμα με όνομα FastFood και τίτλο «Ο ΜΑΚΗΣ», που θα περιέχει ένα jtabbedpane με δύο jpanel (1 o και 2 ο tab) 2. Το πρώτο tab θα λέγεται «ΦΟΡΜΑ ΠΑΡΑΓΓΕΛΙΑΣ» και το δεύτερο θα λέγεται «ΣΥΝΟΛΙΚΗ ΠΑΡΑΓΓΕΛΙΑ» 3. Τab 1 o Θα χρησιμο ποιήσετε ένα jseparator για να χωρίσετε οριζόντια το 1 ο panel σε δύο μέρη. Τραβήξτε το, από την μια άκρη του panel έως την άλλη. ΠΑΝΩ ΜΕΡΟΣ -ΦΑΓΗΤΑ Το πάνω μέρος του panel θα είναι για επιλογή φαγητών, και το κάτω για επιλογή ποτών Μέσα στο πρώτο panel εκτός από την γραμμή διαχωρισμού jseparator θα έχετε Μια λίστα jlist (που μπαίνει αυτόματα σε jscrollpane) Μια jlabel (με εικόνα) Ένα jspinner Ένα jbutton Ετσι για κάθε ένα από τα παραπάνω θα κάνετε τα εξής: VK -16/11/16 - [1]
a. Για την λίστα των φαγητών θα χρησιμο ποιήσετε ένα jlist, Παρατηρήσατε ότι το jlist τοποθετήθηκε αυτόματα μέσα σε ένα jscrollpane? Τα στοιχεία της λίστας jlist1 θα οριστούν με βάση τον Πίνακα foods, στο Customize Code μέσα στο δομητή (στο Initialization Code:custom creation) O πίνακας foods θα οριστεί στις μεταβλητές της κλάσης ως πίνακας αλφαριθμητικών & θα οριστεί και ένας πίνακας ακεραίων foodsprice (οι τιμές των φαγητών), δηλαδή: String foods[] = {"Γύρος", "Σουτζουκάκι", "Σουβλάκι", "Χωριάτικη", "Πράσινη", "Γεμιστά" }; int foodsprice[] = {6, 5, 4, 3, 2, 7}; // δηλώντας έτσι ότι ο Γύρος στοιχίζει 6, το Σουτζουκάκι 5 κτλ Διαγράψτε από την property model του jlist1 τις τιµές item 1, item 2, item 3, item 4, item 5. και ορίστε SelectionMode απλής επιλογής (Single). b. Θα ορίσετε μια 1 η ετικέτα για τις εικόνες των φαγητών (με Border/Bevel Border), και θα προγραµµατίσετε το γεγονός ListSelection/valueChanged της Λίστας, ώστε να εµφανίζεται η κατάλληλη εικόνα στην ετικέτα ανάλογα µε την επιλογή σας. Για να πάρετε την θέση της επιλογής σας από τη λίστα xρησιµοποιήστε τη µέθοδο της getselectedindex() (που επιστρέφει ακέραιο, π.χ. αν επιστρέψει 0 σημαίνει ότι επιλέξατε το 1 ο στοιχείο της λίστας). Έτσι αν βάλετε τις εικόνες σας μέσα στο φάκελο του project, VK -16/11/16 - [2]
μπορείτε να ορίσετε τις εικόνες ως μεταβλητές πχ: και κατόπιν στην λίστα, στο γεγονός επιλογής της λίστας ListSelection θα τις επιλέξετε (με case) Κτλ. //(ΠΡΟΣΟΧΗ soutzoukaki η μεταβλητή και soutsoukaki.jpg η εικόνα) c. Δίπλα από την λίστα προσθέστε ένα jspinner (για την επιλογή ποσότητας). Επιλέξτε την ιδιότητα model για να αλλάξτε το Model Type σε Νumber και τσεκάρεται το Minimum(με ελάχιστο το 0). Η τιμή (επιλογή της ποσότητας) επιστρέφεται με getvalue(). d.τέλος, κάτω από την λίστα βάλτε ένα jbutton με κείμενο Προσθέστε στην Παραγγελία. Όταν θα πατηθεί το κουμπί τότε, ότι έχει επιλεχθεί στην Λίστα (το είδος φαγητού), αλλά και η επιλεγμένη Ποσότητα (από το jspinner) θα προστεθούν σε μια γραμμή στον Πίνακα του 2 ου tab. VK -16/11/16 - [3]
ΚΑΤΩ ΜΕΡΟΣ ΠΟΤΑ Παρόμοια με το πάνω μέρος, εκτός του ότι αντί για jlist θα βάλετε jcombobox. a. Eτσι και για τα ποτά θα ορίσετε ένα Πίνακα αλφαριθµητικών και ένα Πίνακα ακεραίων, δηλ.: String drinks[] = { "Πορτοκαλάδα", "Κόκα Κόλα", "Νερό", "Λεµονάδα"}; int drinksprice[] = {2, 3, 1, 2}; Για την εµφάνιση των ποτών αντί λίστας θα χρησιµοποιήσετε ένα jcombobox, που θα ορίσετε µε βάση τον Πίνακα drinks όπως ορίσατε την λίστα για τον Πίνακα foods. b. Προγραµµατίστε το γεγονός ActionPerformed έτσι ώστε να εµφανίζεται η κατάλληλη εικόνα στην 2 η ετικέτα ανάλογα µε την επιλογή σας - jcombobox1.getselectedindex() - στο ComboBox. Τις εικόνες αν θέλετε βάλτε τις πάλι σε μεταβλητές: // με εισαγωγή βιβλιοθήκης πάνω πάνω import javax.swing.imageicon; c.&d. Παρόµοια µε το πάνω µέρος ορίστε ένα jspinner και ένα jbutton. Τab 2 o VK -16/11/16 - [4]
Το 2 ο tab θα έχει ένα πίνακα (με αναλυτικά την παραγγελία) ένα 3 ο πάνελ (για το συνολικό ποσό) με άλλο χρώμα και 2-3 ετικέτες Τοποθετήστε στο 3 ο jpanel (το κίτρινο) τα κατάλληλα συστατικά για να εµφανίσετε το συνολικό κόστος της παραγγελίας (π.χ δυο τρια jlabel). Για τον Πίνακα όπου θα εµφανίσετε αναλυτικά την παραγγελία εισάγετε ένα jtable. Θα παρατηρήσετε ότι εισάγοντας το jtable, ο Πίνακας µπαίνει αυτόµατα µέσα σε jscrollpane. Φροντίστε επιλέγοντας model ( ), ο Πίνακας να έχει 3 Στήλες με τους σωστούς τίτλους επικεφαλίδων Παραγγελία/Ποσότητα/Τιμή. Οι τύποι που θα δέχεται θα είναι String, Ιnteger, Ιnteger και δεν θα έχει καµία γραµµή (row) αφού αρχικά δεν έχουμε κάνει παραγγελία-. Καθορισμός στηλών του Πίνακα Επιλογή αριθμού στηλών για τον Πίνακα 4. Θα προγραµµατίσετε το γεγονός actionperformed των δύο jbutton στο 1 ο ΤΑΒ, ώστε να ενηµερώνονται κατάλληλα οι γραµµές του Πίνακα καθώς και το συνολικό κόστος της Παραγγελίας στο 2 ο TAB. Για να γεµίσετε τον Πίνακα, εισάγετε σειρές με addrow(seira); π.χ. την σειρά: "Σουβλάκι" 2 4 : // String food= "Σουβλάκι" ; int posotis=2, int timi=4}; Object[] seira = {food, posotis, timi}; DefaultTableModel model = (DefaultTableModel) jtable1.getmodel(); model.addrow(seira); Ετσι στην 1 η γραμμή του, θα βάλετε τις μεταβλητές που θα ορίσετε εσείς π.χ. food=foods[jlist1.getselectedindex()] Απαιτεί να προστεθεί και η βιβλιοθήκη: import javax.swing.table.defaulttablemodel; Αν θέλετε λάβετε υπόψη ποσότητα =0 κτλ. int posotita=integer.parseint(jspinner1.getvalue().tostring()); //Μετατροπή από Οbject σε Integer. VK -16/11/16 - [5]