Προς το περιεχόμενο

Πώς δηλώνεις το σωστό path για να εισάγεις εικόνα .jpg στη Java?


niknax

Προτεινόμενες αναρτήσεις

Δημοσ.

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: και από εκεί να εισάγω τη φωτό,αλλά πάλι δε δούλεψε..

Ευχαριστώ όποιον μπορεί να βοηθήσει!

Δημοσ.

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

Δημοσ.

Σύμφωνα με το API:

 

Constructor: ImageIcon(String filename)

Creates an ImageIcon from the specified file.

 

Αυτος πιστεύω είναι ο ποιο απλος τρόπος για να το κάνεις. Αν ρίξεις μια ματιά στο ΑΡΙ θα βρεις κι άλλους τρόπους.

Δημοσ.

Παιδιά ,ο σίγουρος τρόπος τελικά είναι να αποθηκεύσεις τη φωτογραφία που θέλεις στο φάκελο build-->classes + image (που θέλεις).

 

Έτσι ο κώδικας γίνεται: Icon bug = new ImageIcon (getClass().getResource("A.jpg"));

όπου A.jpg είναι το όνομα της φωτό που θέλεις να χρησιμοποιήσεις.

 

Φίλε elis88 το ΑPI με είχε ελαφρώς μπερδέψει και βοηθήθηκα από εδώ:http://www.kodejava.org/examples/223.html

 

Ευαριστώ πάντως!:-)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...