niknax Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Kαλησπέρα σε όλους. Έχω μια απορία, με ένα παράδειγμα από το βιβλίο των Deittel & Deittel για Java.Υποτίθεται πως το παράδειγμα αφορά στην "Προβολή εικόνων και κειμένου σε ένα παράθυρο". Το πρόβλημα εντοπίζεται στη μέθοδο getResource(() ,η οποία και περιέχει το url της εικόνας που θέλει να αποθηκεύσει κάποιος. Το πρόβλημα είναι το εξής: α) Το βιβλίο περιγράφει την εισαγωγή εικόνας ως εξής: Icon bug = new ImageIcon (getClass().getResource("bug.gif"); Πώς δηλώνεται το path? ¨Μόνο με την ονομασία της εικόνας? β) Προσπάθησα με πολλούς τρόπους και τελικά δεν κατάφερα τίποτα.Σε όλες τις παραλλαγές ο compiler δεν έβγαζε λάθος,αλλά πάντα exception. Κώδικας: import java.awt.FlowLayout; //καθορίζει πώς διατάσσονται τα Components import javax.swing.JFrame; //παρέχει τα βασικά χαρακτηριστικά παραθύρου import javax.swing.JLabel; //προβάλλει κείμενο και εικόνες import javax.swing.SwingConstants; //κοινές σταθερές χρησιμοποιούμενες με Swing import javax.swing.Icon; //περιβάλλον χρησιμοποιούμενο για τ χειρισμό εικόνων import javax.swing.ImageIcon; //φορτώνει εικόνες public class LabelFrame extends JFrame { private JLabel label1; //JLabel μόνο με κείμενο private JLabel label2; //JLabel με κείμενο και εικονίδιο private JLabel label3; //JLabel με κείμενο και εικονίδιο //η συνάρτηση δημιουργίας LabelFrame προσθέτει JLabel σε JFrame public LabelFrame() { //εμπλέκει τη συνάρτηση δημιουργίας της υπερκλάσης //JFrame super ("Eξετάζοντας την κλάση JLabel"); setLayout( new FlowLayout ()); //θέτει τη διάταξη πλαισίου //η συνάρτηση δημιουργίας JLabel //με ένα όρισμα label1 = new JLabel("JLabel με κείμενο"); //η μέθοδος setToolTipText βάζει το κείμενο στο //ποντίκι όταν ακουμπήσει πάνω στο label1 label1.setToolTipText("Aυτό είναι το label1"); //η μέθοδος add κληρονομείται εμμέσως από την κλάση Container //και προβάλλει το συστατικό GUI στην οθόνη add (label1); //συνάρτηση δημιουργίας JLabel με ορίσματα String,εικονίδιο και στοίχιση Icon bug = new ImageIcon (getClass().getResource("file:///C:Documents and Settings/Administrator/Επιφάνεια εργασίας/A.jpg")); //παίρνει τη φωτογραφία???? label2 = new JLabel ("JLabel με κείμενο και εικόνα",bug,SwingConstants.LEFT); //η μέθοδος setToolTipText βάζει το κείμενο στο //ποντίκι όταν ακουμπήσει πάνω στο label2 label2.setToolTipText("Aυτό είναι το label2"); add (label2); //προσθέτει το label2 στο JFrame // συνάρτηση δημιουργίας JLabel χωρίς ορίσματα label3 = new JLabel (); label3.setText("JLabel με εικόνα και κείμενο κάτω-κάτω"); label3.setIcon(bug); //προσθέτει το εικονίδιο στο JLabel //δηλώνει πού θα στοιχηθεί το κείμενο label3.setHorizontalTextPosition(SwingConstants.CENTER); label3.setVerticalTextPosition(SwingConstants.BOTTOM); label3.setToolTipText("Aυτό είναι το label3 "); add (label3); //προσθέτει το label3 στο JFrame }//τέλος μεθόδου }// τέλος κλάσης Επίσης δοκίμασα να φτιάξω και άλλον φάκελο στο C: και από εκεί να εισάγω τη φωτό,αλλά πάλι δε δούλεψε.. Ευχαριστώ όποιον μπορεί να βοηθήσει!
drmetal Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Icon bug = new ImageIcon (getClass().getResource("file:///C:Documents and Settings/Administrator/Επιφάνεια εργασίας/A.jpg")); αυτό 99% είναι λάθος, δεν ξέρω το σωστό ακριβώς πως γράφετε πάντως δεν έχει και πολύ νόημα να φορτώνεις από το C. το πιό λογικό είναι να βάλεις την είκόνα στο ίδιο φάκελο με το class σου ή σε ένα υποφάκελο και να κάνεις αυτό πχ αν η εικόνα σου είναι στο φάκελο testfolder: Icon bug = new ImageIcon (getClass().getResource("testfolder/A.jpg")); δηλαδή σχετικό path ώς προς τη κλάση σου και όχι απόλυτο το απόλυτο αν θυμαμαι καλά είναι c:\\folder1\\folder2\\img.jpg δεν είμαι σίγουρος αν δέχεται ελληνικά στο filename
elis88 Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 Σύμφωνα με το API: Constructor: ImageIcon(String filename) Creates an ImageIcon from the specified file. Αυτος πιστεύω είναι ο ποιο απλος τρόπος για να το κάνεις. Αν ρίξεις μια ματιά στο ΑΡΙ θα βρεις κι άλλους τρόπους.
niknax Δημοσ. 5 Ιουνίου 2008 Μέλος Δημοσ. 5 Ιουνίου 2008 Παιδιά ,ο σίγουρος τρόπος τελικά είναι να αποθηκεύσεις τη φωτογραφία που θέλεις στο φάκελο build-->classes + image (που θέλεις). Έτσι ο κώδικας γίνεται: Icon bug = new ImageIcon (getClass().getResource("A.jpg")); όπου A.jpg είναι το όνομα της φωτό που θέλεις να χρησιμοποιήσεις. Φίλε elis88 το ΑPI με είχε ελαφρώς μπερδέψει και βοηθήθηκα από εδώ:http://www.kodejava.org/examples/223.html Ευαριστώ πάντως!
elis88 Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 Σημασία έχει που κατάφερες να κάνεις αυτό που ήθελες.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.