απορια σε java
- Ισοβίτης
- Venus Former Team Member
- Posts: 1262
- Joined: Sat Apr 21, 2007 5:45 pm
- Gender: ♂
- Location: Πίσω από τα σίδερα
- Contact:
Re: απορια σε java
Αν από design mode το γυρίσεις σε source mode μπορείς να βλέπεις και να πειράζεις τα περισσότερα, αλλά όχι όλα, καθώς το Netbeans κρίνει ότι πρέπει να σου απαγορέψει να editάρεις συγκεκριμένα κομμάτια (όπως πχ η δήλωση των διαφόρων components).
Μπορείς να εφαρμόζεις αλλαγές επί αυτών κάνοντας στο κάθε components δεξί κλικ -> Properties. Έτσι, μπορείς να τα παραμετροποιήσεις κατά βούληση.
Γενικώς, η swing είναι χάλια, παρότι ο designer του Netbeans καταβάλλει φιλότιμες προσπάθειες...
Μπορείς να εφαρμόζεις αλλαγές επί αυτών κάνοντας στο κάθε components δεξί κλικ -> Properties. Έτσι, μπορείς να τα παραμετροποιήσεις κατά βούληση.
Γενικώς, η swing είναι χάλια, παρότι ο designer του Netbeans καταβάλλει φιλότιμες προσπάθειες...
- cypher
- Venus Former Team Member
- Posts: 6207
- Joined: Mon Sep 29, 2008 9:12 pm
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Ναι, το ξερω αυτο.Ισοβίτης wrote:Αν από design mode το γυρίσεις σε source mode μπορείς να βλέπεις και να πειράζεις τα περισσότερα, αλλά όχι όλα, καθώς το Netbeans κρίνει ότι πρέπει να σου απαγορέψει να editάρεις συγκεκριμένα κομμάτια (όπως πχ η δήλωση των διαφόρων components).
Μπορείς να εφαρμόζεις αλλαγές επί αυτών κάνοντας στο κάθε components δεξί κλικ -> Properties. Έτσι, μπορείς να τα παραμετροποιήσεις κατά βούληση.
Γενικώς, η swing είναι χάλια, παρότι ο designer του Netbeans καταβάλλει φιλότιμες προσπάθειες...









- ~~Wind~~
- Gbyte level
- Posts: 1747
- Joined: Thu Nov 30, 2006 1:07 am
- Academic status: N>4
- Gender: ♂
- Location: *void
Re: απορια σε java
Δεξί κλικ --> Customize Code, δε σ'αφήνει να τα πειράξεις όλα αλλά αρκετά.
σε NetBeans-6.7b
σε NetBeans-6.7b


Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
Re: απορια σε java
Ή τελικά, αν τίποτα δε σε καλύπτει, απλά ανοίγωντας τα src files με κάποιον άλλο editor. Βέβαια σε αυτή την περίπτωη δε θα χρησιμοποιήσεις netbeans. 

Είμαι ένας μοναχικός cowboy...
- cypher
- Venus Former Team Member
- Posts: 6207
- Joined: Mon Sep 29, 2008 9:12 pm
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Αυτο εφαρμοσα και τοτε.Luke wrote:Ή τελικά, αν τίποτα δε σε καλύπτει, απλά ανοίγωντας τα src files με κάποιον άλλο editor. Βέβαια σε αυτή την περίπτωη δε θα χρησιμοποιήσεις netbeans.

---------------------------------
Λοιπον ρωταω εδω γιατι μου εχει σπασει τα νευρα τοσην ωρα που δεν το βρισκω.
Εστω οτι εχω εναν πινακα με 10 (π.χ.) JTextArea's σε ενα panel. Σε καθε ενα απο αυτα εχω ορισει ενα mouseListener ακολουθως:
Code: Select all
area[i].addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
//methodos bla bla pou xrisimopoio
}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
Και θελω στο σημειο που εχω Την μεθοδο bla bla να βρω πιο JTextArea ηταν αυτο που προκαλεσε το event ετσι ωστε να κανω μετα getText απο εκεινο και να παρω το κειμενο που θελω. Το λογικο θα ηταν το e.getComponent(); να μου επιστρεφει το component που εχει το event αλλα μου επιστρεφει καποια ασχετη κλαση.


Καμια ιδεα;
υ.γ. παιζει να κανω καμια χαζομαρα και να ειναι απλη η λυση

ΕΔΙΤ: Βλακεια μου τελικα

Code: Select all
((JTextArea) e.getSource()).getText();

Πφφ. Παω να συνεχισω.

------------------------------------------------------------------------------------------------------
Ουφ, επομενη απορια και αν ολα πανε καλα θα ειναι και η τελικη.
Εστω οτι εχω ενα JScrollPane στο οποιο βαζω ως ορισμα κατα την δημιουργια του instance ενα JList το οποιο JList το εχω ορισει με εναν Vector που παιρνει μονο JTextArea( γιατι θελω να παρουσιαζει πολλες γραμμες στο string του).
Οταν το τρεχω η λιστα μου εμφανιζεται κανονικα μονο που το καθε JTextArea μου το εμφανιζει σαν Object (Σαν να κανει δηλαδη Object.toString() ) αντι να μου εμφανιζει κανονικα το TextArea.

Ψαχνω να βρω τις πταιει.
Ο βασικος κωδικας ειναι ουσιαστικα αυτος:
Code: Select all
JList list;
Vector <JTextArea> texts=new Vector<JTextArea>();
for(int i=0;i<size();i++){ //to size anatheretai se allon vector...
JTextArea textArea=new JTextArea();
textArea.setMargin(new Insets(5,5,5,5));
textArea.setText("Bla Bla");
textArea.setEditable(false);
textArea.setLineWrap(true);
texts.add(orderInfo);
}
list=new JList( texts );
JScrollPane scroll=new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);;
scroll.setVisible(true);








- maxthebest
- Kilobyte level
- Posts: 180
- Joined: Fri Dec 02, 2005 5:23 pm
- Location: Παράδεισος
Re: απορια σε java
Τα Jlists θα εμφανιζουν κειμενο(δεν εμφανιζουν components), οποτε φυσικο ειναι να καλει την .toString,
Τωρα για να το κανεις να εμφανιζει Components.
πολυ απλα, φτιαξε δικο σου ListCellRenderer οπου στην getListCellRendererComponent θα επιστρεφει το components που θες να εχει σε καθε κουτακι.
http://java.sun.com/j2se/1.4.2/docs/api ... derer.html
http://java.sun.com/products/jfc/tsc/te ... jlist.html
Τωρα για να το κανεις να εμφανιζει Components.
πολυ απλα, φτιαξε δικο σου ListCellRenderer οπου στην getListCellRendererComponent θα επιστρεφει το components που θες να εχει σε καθε κουτακι.
http://java.sun.com/j2se/1.4.2/docs/api ... derer.html
http://java.sun.com/products/jfc/tsc/te ... jlist.html
Ούτοι συνέχθειν, αλλά συμφιλείν έφυν (Αντιγόνη στοίχος 523) =
Δεν γεννήθηκα για να συμμερίζομαι το μίσος , αλλά για να αγαπώ και να με αγαπούν.
Δεν γεννήθηκα για να συμμερίζομαι το μίσος , αλλά για να αγαπώ και να με αγαπούν.
- cypher
- Venus Former Team Member
- Posts: 6207
- Joined: Mon Sep 29, 2008 9:12 pm
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Μαλιστα, δεν γνωριζα για αυτην τους την ιδιοτητα. Εφτιαξα εναν αλλον renderer λοιπον οπως εδειχνε περιπου το api:
και λειτουργει κανονικα. Πρεπει να αλλαξω ενα καρο πραγματα παλι μιας και δοκιμαζα διαφορετικες λυσεις αλλα φαινεται πολυ πιο ωραιο.
Φενκ γιου βερυ βερυ ματσ.

Code: Select all
public class CellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list,
Object value, // value to display
int index, // cell index
boolean iss, // is the cell selected
boolean chf) { // the list and the cell have the focus
super.getListCellRendererComponent(list, value, index, iss, chf);
return new JTextArea(((JTextArea)value).getText());
}
}

Φενκ γιου βερυ βερυ ματσ.









Re: απορια σε java
παιδια εχω και γω μια απλη αποριουλα.. ποια ειναι η διαφορα αυτων των 2 :
και
?
Code: Select all
class Bla implements Comparable {}
Code: Select all
class Bla implements Comparable<Bla> {}
- Loner
- Venus Former Team Member
- Posts: 4004
- Joined: Fri Oct 26, 2007 11:08 pm
- Academic status: N>4
- Gender: ♂
- Location: Στη ρωγμή του χρόνου
Re: απορια σε java
Χωρίς να είμαι σίγουρος, όταν αυτό που θα περάσεις ως όρισμα στην compareTo και με το οποίο θέλεις να συγκρίνεις το this ή κάποια μεταβλητή είναι πρωταρχικός τύπος της Java χρησιμοποιείς
και όταν θέλεις στην compareTo να συγκρίνεις με ένα αντικείμενο δικιάς σου τάξης (στο παράδειγμα της τάξης Bla) τότε πρέπει να το δηλώσεις στο implements, όπως εδώ
Code: Select all
class Bla implements Comparable {}
Code: Select all
class Bla implements Comparable<Bla> {}
You either die a Spongebob or live long enough to see yourself become the Squidward.
- statakos
- Kilobyte level
- Posts: 482
- Joined: Wed Sep 17, 2008 3:07 am
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Επίσης, να αναφέρω πως και στην πρώτη περίπτωση μπορείς να συγκρίνεις κάνοντας cast το Οbject στο αντικείμενό σου π.χ. Bla.
"Always program as if the person who will be maintaining your program is a violent psychopath that knows where you live."
Re: απορια σε java
δηλαδη με τον πρωτο τροπο εχουμε την δυνατοτητα να συγκρινουμε το instance μας με κατι αλλο πέρα απο άλλα αντικειμενα της ιδιας ταξης και με τον δευτερο το συγκρινουμε μονο με αλλα Bla .. ε?
Re: απορια σε java
Σωστά. Μπορείς να συγκρίνεις με οποιοδήποτε κλάση (που στην ουσία κάνει extend την Object).Van51 wrote:δηλαδη με τον πρωτο τροπο εχουμε την δυνατοτητα να συγκρινουμε το instance μας με κατι αλλο πέρα απο άλλα αντικειμενα της ιδιας ταξης
Επίσης σωστό. Με αυτό τον τρόπο στην ουσία "προστατέυεις" το χρήστη από το να κάνει λάθος, δηλαδή αν πάει να συγκρίνει "Apple" με "Orange" (έστω τα ονόματα 2 κλάσεων) θα προκύψει σφάλμα στη μεταγλώττιση. Έτσι θα τον περιορίσει ώστε να συγκρίνει μόνο όμοια πράγματα μεταξύ τους (π.χ. 2 αντικείμενα "Apple" ή "Bla" όπως τα λες).Van51 wrote:και με τον δευτερο το συγκρινουμε μονο με αλλα Bla .. ε?
Είμαι ένας μοναχικός cowboy...
Re: απορια σε java
οκ ευχαριστω πολυ παιδια 

- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Πώς στο καλό γράφουμε σε αρχείο;
Μου βγαίνουν όλα κινέζικα.


Μου βγαίνουν όλα κινέζικα.
Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- ultimate_aektzis
- Wow! Terabyte level
- Posts: 6373
- Joined: Tue Nov 13, 2007 10:11 pm
- Gender: ♂
- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Απίστευτα γρήγορη απάντηση!
Thanks dude! Δούλεψε!

Thanks dude! Δούλεψε!

Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- cypher
- Venus Former Team Member
- Posts: 6207
- Joined: Mon Sep 29, 2008 9:12 pm
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Μια αλλη σιγουρη λυση απλα για να εχεις υποψιν σου ειναι και αυτο:

Οπου στον κατασκευαστη αν θες οριζεις και το encoding και τυπωνεις παρα πολυ απλα με μια μεθοδο print η println.PrintWriter out2 = new PrintWriter(new OutputStreamWriter(new FileOutputStream("Sample.txt"), "8859_7" ));








- para
- Wow! Terabyte level
- Posts: 3648
- Joined: Sat Nov 04, 2006 2:59 am
- Academic status: Alumnus/a
- Gender: ♂
Re: απορια σε java
Ευχαριστώ πολύ!! 

Γύρνα είμαι ένα άψυχο κορμί που σ' αγαπάει, αισθάνομαι στον άνεμο φτερό
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
Σαν μέσα σε όνειρο η ζωή με προσπερνάει, δείξε μου οίκτο μια στιγμή παρακαλώ...
#!
Κοίτα πως με κατάντησε η δική σου η αγάπη, να μη γνωρίζω από που να κρατηθώ
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
Στο τελευταίο της ζωής το σκαλοπάτι, Γύρνα, είμαι ένα βήμα απ' το γκρεμό...
- Theofaman
- Mbyte level
- Posts: 984
- Joined: Sat Sep 24, 2005 1:07 am
- Academic status: Alumnus/a
- Gender: ♂
- Location: Running from the weak side to the low post
Re: απορια σε java
Έχω απορία!
Έστω ότι έχω 2 κλάσεις, μία Main.java
και μία TD.java η οποία απλά στην run() δίνει μια τιμή σε ένα String.
Μήπως γνωρίζει κάποιος γιατί στην Main.java η t.getStr() επιστρέφει null?
Ευχαριστώ!

Έστω ότι έχω 2 κλάσεις, μία Main.java
Code: Select all
public class Main {
public static void main(String[] args) {
TD t = new TD();
Thread t1 = new Thread(t);
t1.start();
System.out.println(t.getStr());
}
}
Code: Select all
public class TD implements Runnable
{
private String str;
public synchronized String getStr() {
return str;
}
public void run()
{
str = new String ("Etoimo to thread");
}
}
Ευχαριστώ!

Theo(pame na)fam(e mprizoles)an!
- tsilochr
- Wow! Terabyte level
- Posts: 3246
- Joined: Tue Mar 16, 2004 2:47 pm
- Academic status: PhD
- Gender: ♂
- Location: mm.aueb.gr
- Contact:
Re: απορια σε java
πολύ χονδρικά διότι το 2ο thread έχει ξεχωριστή μνήμη και το String str δεν είναι μοναδικό. Έχει να κάνει με το memory model της jvm και πως υλοποιούνται τα threads (και τα οποία δεν ακολουθούν τον κανόνα ότι έχουμε κοινή μνήμη κλπ κλπ). Για να πετύχεις αυτό που θες (δλδ τα writes σε μια μεταβλητή να είναι εμφανή σε όλα τα thread της jvm), είτε κάνε την μέθοδο getStr() synchronized ή δήλωσε το πεδίο str ως volatile (προτείνεται το synchronized).
Btw, αν ασχολείσαι με multithreading σε java, το καλύτερο βιβλίο είναι το java concurrency in practice
Btw, αν ασχολείσαι με multithreading σε java, το καλύτερο βιβλίο είναι το java concurrency in practice
- Theofaman
- Mbyte level
- Posts: 984
- Joined: Sat Sep 24, 2005 1:07 am
- Academic status: Alumnus/a
- Gender: ♂
- Location: Running from the weak side to the low post
Re: απορια σε java
Μα η getStr() ειναι synchronized!tsilochr wrote:πολύ χονδρικά διότι το 2ο thread έχει ξεχωριστή μνήμη και το String str δεν είναι μοναδικό. Έχει να κάνει με το memory model της jvm και πως υλοποιούνται τα threads (και τα οποία δεν ακολουθούν τον κανόνα ότι έχουμε κοινή μνήμη κλπ κλπ). Για να πετύχεις αυτό που θες (δλδ τα writes σε μια μεταβλητή να είναι εμφανή σε όλα τα thread της jvm), είτε κάνε την μέθοδο getStr() synchronized ή δήλωσε το πεδίο str ως volatile (προτείνεται το synchronized).
Btw, αν ασχολείσαι με multithreading σε java, το καλύτερο βιβλίο είναι το java concurrency in practice
Θα ριξω μια ματια στο βιβλιο

EDIT: Τελικά δούλεψε κάνοντας 2 φορές System.out.println(t.getStr()); με output
Null
Etoimo to thread

Theo(pame na)fam(e mprizoles)an!
- Zifnab
- Venus Former Team Member
- Posts: 7581
- Joined: Tue Nov 15, 2005 2:42 am
- Academic status: MSc
- Gender: ♂
- Location: Connecticut
- Contact:
Re: απορια σε java
Το null βγαίνει γιατί τρέχει η System.out.println(t.getStr()); προτού τρέξει η εντόλη μέσα στο run() του thread που γεμίζει το String...
Τώρα πως θα το αποτρέψεις δεν ξέρω... εξαρτάται τί θέλεις να κάνεις.
Τώρα πως θα το αποτρέψεις δεν ξέρω... εξαρτάται τί θέλεις να κάνεις.