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

Ερωτησεις σχετικα με JSwing


glompos22

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

Δημοσ.

Εχώ ενα JFrame με BorderLayout και εχώ ενα JPanel στο CENTER. Όταν πατάω ενα κουμπί θέλω να αντικαθιστώ αυτο το JPanel με ένα αλλό. Μια ιδέα που έχω ειναι να κανω το παλιό JPanel setVisible(false) και να δημιουργό ενα καινούργιο JPanel στην θέση του, αλλά αυτό δεν μου φαίνεται και πολύ σωστό προγραματιστικα γιατί το παλίο JPanel δεν θα διαγράφει απο την μνήμη. Εγώ θέλω να το διαγράψω. Καμία ιδέα ???

Δημοσ.
Εχώ ενα JFrame με BorderLayout και εχώ ενα JPanel στο CENTER. Όταν πατάω ενα κουμπί θέλω να αντικαθιστώ αυτο το JPanel με ένα αλλό. Μια ιδέα που έχω ειναι να κανω το παλιό JPanel setVisible(false) και να δημιουργό ενα καινούργιο JPanel στην θέση του, αλλά αυτό δεν μου φαίνεται και πολύ σωστό προγραματιστικα γιατί το παλίο JPanel δεν θα διαγράφει απο την μνήμη. Εγώ θέλω να το διαγράψω. Καμία ιδέα ???

 

Η απάντηση που σου έδωσα στο άλλο forum δεν σου έκανε ε?:P

Θέλεις να στείλεις τον κώδικα όταν προσπάθησες να κάνεις replace to content pane?

 

http://java.sun.com/javase/6/docs/api/java/awt/Container.html#removeAll()

 

Πάντως το JFrame αποκλείεται να έχει borderlayout.

 

Το JFrame από μόνο του δεν έχει BorderLayout αλλά το contentPane στο JFrame έχει border layout. Αλήθεια γιατί σου φαίνεται περίεργο?

Δημοσ.

Απλά έστω oldPanel το αρχικο που θες να διαγραφεί και newPanel το καινούριο που θες να εμφανίσεις τότε θα γραψεις..

frame.getContentPane().remove(oldPane);//Να πάψει να υπάρχει ως component του frame

frame.getContentPane().add(newPane);//Να προστεθεί ως component του frame

oldPane=null;//Το οποίο θα το γραψεις για να δειχνεις οτι οντως παύεις να το χρειάζεσαι και να φύγει από την μνήμη, καθώς δε θα υπάρχει reference

Δημοσ.
Απλά έστω oldPanel το αρχικο που θες να διαγραφεί και newPanel το καινούριο που θες να εμφανίσεις τότε θα γραψεις..

frame.getContentPane().remove(oldPane);//Να πάψει να υπάρχει ως component του frame

frame.getContentPane().add(newPane);//Να προστεθεί ως component του frame

oldPane=null;//Το οποίο θα το γραψεις για να δειχνεις οτι οντως παύεις να το χρειάζεσαι και να φύγει από την μνήμη, καθώς δε θα υπάρχει reference

 

Βασικά δεν νομίζω ότι χρειάζεται όλη αυτή η ιστορία.

Αν απλά θέσει το καινούριο panel ως content pane τότε θα αντικαταστήσει και το reference από το JFrame. Πράγμα που σημαίνει πως ο gc θα το μαζέψει κάποια στιγμή και θα το διαγράψει από την μνήμη.

 

[offtopic]

JavaMan έριξα μία ματιά στο blog σου.

Βρε παιδί μου πολύ cpu τρώει το scriptάκι που έχεις βάλει για το χιόνι.

Σε Core2Duo T9300 2.5Ghz, το αποτέλεσμα είναι το παρακάτω, με και χωρίς javascript ενεργοποιημένη ;)

 

post-27058-129062985127_thumb.jpg

 

Σε FF 3.0.6 πάντα.

 

[/offtopic]

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

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

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