Page 1 of 5

απορια σε java

Posted: Mon Mar 09, 2009 11:47 am
by necrofear_13
Γεια σας παιδια μια απορια θελω να κανω.Εχω φτιαξει μια εφαρμογη με γραφικα και εχο προσθεσει καποιες εικονες .gif με new ImageIcon(this.getClass().getresources("path"); Ενω μεσω netbeans μου τρεχει κανονικα οταν φτιαχνω το jar δεν μου αναγνωριζονται οι εικονες και μου πεταει exception.Καμια συμβουλη???Ευχαριστω!!!

Re: απορια σε java

Posted: Mon Mar 09, 2009 11:55 am
by Sreak
το path στις εικόνες πρέπει να το βάλεις relative π.χ ./../images/photo.gif και οχι absolute π.χ. c:\Documents\images\photo.gif
Επιπλέον θα πρέπει μαζι με το jar να σέρνεις και τον φεκολο images μαζί.

Re: απορια σε java

Posted: Mon Mar 09, 2009 12:03 pm
by necrofear_13
Αυτο κανω relative το εχω βαλει και εχω βαλει το φακελο με τα images παντου

Re: απορια σε java

Posted: Mon Mar 09, 2009 1:54 pm
by tsilochr
η getResource(String name) δεν ψάχνει στο filesystem. Το μονοπάτι που δίνεις ως όρισμα έχει αρχική θέση το φάκελο του πακέτου στο οποίο ανήκει η κλάση που καλείς. Παράδειγμα, αν έχεις το παρακάτω κώδικα

Code: Select all

package my;
class My{
    [...]
    this.getClass().getResource("foo.jpg");
αυτό θα αναζητήσει το πόρο foo.jpg μέσα στο directory my

Re: απορια σε java

Posted: Mon Mar 09, 2009 2:03 pm
by necrofear_13
Οποτε λες να χρισημοποιησω τον κατασκευαστη με το filename???
edit:μα ακριβως εκει δεν θελω να ψαξει για να βρει την εικονα?στο directory my δεν θελω να ειναι???

Re: απορια σε java

Posted: Mon Mar 09, 2009 4:08 pm
by tsilochr
1. η εικόνα είναι μέσα στο jar?
2. θα πρότεινα να κάνεις

Code: Select all

InputStream istream = this.getClass().getResourceAsStream("img.gif"); //this will return null if img.gif is not found
ImageIcon icon = ImageIO.read(istream); //this throws IOException

Re: απορια σε java

Posted: Mon Mar 09, 2009 6:20 pm
by necrofear_13
Το θεμα λυθηκε και για οποιον εχει παρομοιο προβλημα ας ακολουθησει τη συμβουλη του tsilo!!!

Re: απορια σε java

Posted: Mon Mar 09, 2009 10:50 pm
by tsilochr
necrofear_13 wrote:Το θεμα λυθηκε και για οποιον εχει παρομοιο προβλημα ας ακολουθησει τη συμβουλη του tsilo!!!
ευγε νέε μου, σωστά τα λες.

Re: απορια σε java

Posted: Tue Mar 10, 2009 12:03 am
by h4wk
Χρόνια πολλά παλιέ :smt016

Re: απορια σε java

Posted: Tue Mar 10, 2009 12:32 am
by tsilochr
ευχαριστώ

ΥΓ Σήμερα έχει γενέθλια ο ΟΣΦΠ

Re: απορια σε java

Posted: Wed Mar 11, 2009 2:36 am
by necrofear_13
Οσον αφορα την προηγουμενη μου ερωτηση στην περιπτωση που εχει καποιος απορια πως γινεται να διαβασεις και .txt απο jar παλι ακολουθουμε παρομοια λογικη με αυτη που ακολουθησαμε για το image.
InputStream is = getClass().getResourceAsStream(filename);
BufferedReader br = new BufferedReader
(new InputStreamReader(is));
edit:To txt file πρεπει να βρισκεται στο φακελο που ειναι το .class της ταξης που περιεχει τον παρακατω κωδικα(ισως κανω λαθος εδω ας με διορθωσει καποιος αν κανω λαθος)
(Το εβαλα σε περιπτωση που το εχει καποιος απορια εμενα μου εφαγε πολυ ωρα το πρωτο και το ελυσα χαρη στο venus και τον tsilocr) :smt010
καληνυχτα!!!

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:08 pm
by ultimate_aektzis
Εχω μια απορια...ας υποθεσουμε οτι κανουμε extends μια κλαση και παραλληλα implements ενα interface.Ας υποθεσουμε και οτι τοσο η κλαση οσο και το interface εχουν μεθοδο με ιδια υπογραφη.Αν θελω να την ακυρωσω, πως θα του δωσω να καταλαβει ποια απο τις 2 να ακυρωσω ή αν θελω και τις 2?

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:19 pm
by marios
Δεν κατάλαβα τι ακριβώς εννοείς... (αρχικά, το ακυρώνω είναι το override;)
Εσυ θα έχεις στην class σου την μέθοδο, η οποία και θα εκτελείται όταν καλείται από αντικείμενο αυτού του τύπου. Που σκάλωσες; :-p

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:26 pm
by ultimate_aektzis
Εχω ενα interface με μια μεθοδο πχ isBoring() :-p .Οταν το interface υλοποιηθει απο μια ταξη, πρεπει να υλοποιηθει αυτη η μεθοδος.Καλα μεχρι εδω?

Εστω οτι η ιδια κλαση που κανει implements το παραπανω interface, κανει extends και μια αλλη κλαση.Η κλαση αυτη(η "μαμα") εστω οτι εχει μια μεθοδο με υπογραφη isBoring().Αν στην κλαση-παιδι θελω να κανω override την isBoring:

1.Πως θα του πω ποια απο τις 2 να ακυρωσω?Του interface ή της super class...

2.Αν θελω να ακυρωσω και τις 2 τι γινεται?Πως δηλωνεται?

Ειναι θεμα πολλαπλης κληρονομικοτητας και μιας και δεν ειχαμε πολυκανει στην c++ τωρα ψαχνομαι :roll:

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:30 pm
by cypher
Να ακυρωσεις ποια μεθοδο του interface; Αφου δεν την εχεις υλοποιησει ακομα. Οποτε λογικα θεωρει ως υλοποιηση την isBoring() που κληρονομηθηκε απο την υπερκλαση. Αν τωρα εσυ δημιουργησεις αλλη μεθοδο στην υποκλαση σου θα ακυρωσεις την isBoring() της υπερκλασης. Η isBoring του Interface ειναι απλα μια "δηλωση" του πως θα ειναι η συναρτηση και δεν εχεις ορισει εκει τιποτα για να γινει σε αυτο ακυρωση. Αρα δεν σε απασχολει εκεινη η isBoring().
Ελπιζω να μην λεω βλακειες. :-p :smt017

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:37 pm
by marios
Δεν είμαι σίγουρος, αλλά νομίζω ότι στην java δεν θελει δήλωση μαμας στην κάθε μέθοδο. Με άλλα λόγια νομίζω ότι κάτι τέτοιο είναι σωστό συνακτικά, αφού κάνει implement το interface και override την parent ταυτόχρονα:

Code: Select all

class mummy
{
  void isBoring()
  {
     mpla mpla
  }

interface father
{
  void isBoring();
}

class child extends mummy implements father
{
   void isBoring()
  {
     mpla2 mpla2
   }
}

Re: απορια σε java

Posted: Tue Mar 31, 2009 11:50 pm
by ultimate_aektzis
Εν τη ριμη του λογου....υλοποιηθει και ακυρωθει, αντιστοιχα, ηθελα να πω αλλα μου εφυγε.
Η μεθοδος του interface μας ενδιαφερει γιατι λογικα δεν περναει το compile αν δεν την ακυρωσεις. :smt017
marios wrote:Δεν είμαι σίγουρος, αλλά νομίζω ότι στην java δεν θελει δήλωση μαμας στην κάθε μέθοδο. Με άλλα λόγια νομίζω ότι κάτι τέτοιο είναι σωστό συνακτικά, αφού κάνει implement το interface και override την parent ταυτόχρονα:

Code: Select all

class mummy
{
  void isBoring()
  {
     mpla mpla
  }

interface father
{
  void isBoring();
}

class child extends mummy implements father
{
   void isBoring()
  {
     mpla2 mpla2
   }
}
Καταρχην, ειναι ακυρο το 2ο ερωτημα μου παραπανω.Δεν μπορω να εχω 2 ορισμους της ιδιας μεθοδου overrided στο ιδιο .java.Νταξ πηγε και 12 :-p

Το κοιταξα και στο pc μου, και φαινεται να στεκει.Μαλλον τις ακυρωνει παραλληλα. :smt017

Re: απορια σε java

Posted: Tue May 05, 2009 3:06 am
by necrofear_13
Γεια σας παιδια εχω ενα .jar που εχω φτιαξει με netbeans 6.1 το οποιο για να λειτουργησει επειδη εχς κανει import καποιες libraries 'κουβαλαει' στον ιδιο directory με αυτον ενα φακελακι lib που περιεχει τις επιπλεον βιβλιοθηκες.Θελω να το πακεταρω σε ενα .exe ή .jar και να μην χρειαζεται να εχω το lib.Υπαρχει τροπος???

Re: απορια σε java

Posted: Tue May 05, 2009 3:24 am
by netharis
Βασικά πρέπει να εισάγεις μέσα στο java archive το φάκελο σου,
και να προγραμματίσεις τα import έτσι ώστε να τα διαβάζουν relative απο το αντίστοιχο κατάλογο.
Δεν βρίσκω κάποιο νόημα να το κάνεις wrap σε exe.
Eαν πάλι σε ενδιαφέρει κάτι τέτοιο κοίταξε το JSmooth.

Re: απορια σε java

Posted: Tue May 19, 2009 6:12 pm
by cypher
Μιας και δεν βρισκω αλλο σχετικο θεμα, ξερει κανεις πως μπορω να ρυθμισω το netbeans ωστε να με αφηνει να κανω edit τον κωδικα του JFrame που φτιαχνει "αυτοματα"; Ξερω οτι μπορω να κανω δεξι κλικ πανω στο καθε component (απο το view mode) και edit code για να κανω καποιες στοιχειωδεις αλλαγες αλλα ειναι κουραστικο. :-p

Re: απορια σε java

Posted: Tue May 19, 2009 11:06 pm
by necrofear_13
Αν πας στο source πειραζεις ολο τον κωδικα μονο σου.Μπορεις να τα σβησεις ολα η να τα αλλαξεις ολα.

Re: απορια σε java

Posted: Tue May 19, 2009 11:12 pm
by cypher
Μα πηγα :-p και δεν μπορω να πειραξω τις γκρι σκιασμενες γραμμες. Μου κανει και τον αντιστοιχο ηχο του σφαλματος (ντοινκ ντοινκ). :-p Οτι μπορω να προσθεσω και αλλες γραμμες ναι, αλλα θελω να αλλαξω και αυτες που ειχε δημιουργησει αυτοματα απο το source κατευθεαιν.