This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
swing:tree [2015/05/17 18:21] gthanos [Δημιουργία του δένδρου] |
swing:tree [2015/05/18 03:53] gthanos [Ανταποκρινόμενοι στα events ενός δένδρου] |
||
---|---|---|---|
Line 52: | Line 52: | ||
tree.getSelectionModel().setSelectionMode | tree.getSelectionModel().setSelectionMode | ||
(TreeSelectionModel.SINGLE_TREE_SELECTION); | (TreeSelectionModel.SINGLE_TREE_SELECTION); | ||
+ | </code> | ||
+ | |||
+ | Οι επιλογές που έχετε αναφορικά με τον αριθμό των κόμβων που μπορείτε να επιλέξετε είναι οι παρακάτω: | ||
+ | <code java> | ||
+ | static int CONTIGUOUS_TREE_SELECTION | ||
+ | //Πολλαπλοί συνεχόμενοι κόμβοι | ||
+ | static int DISCONTIGUOUS_TREE_SELECTION | ||
+ | //Πολλαπλοί κόμβοι, όχι απαραίτητα συνεχόμενοι | ||
+ | static int SINGLE_TREE_SELECTION | ||
+ | //Μόνο ένας κόμβος μπορεί να επιλεγεί κάθε φορά. | ||
</code> | </code> | ||
Line 100: | Line 110: | ||
* **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeSelectionEvent.html|TreeSelectionEvent]]:** events που συνδέονται με επιλογή κόμβων του δένδρου. Τα events αυτά λαμβάνονται μέσα από ένα αντικείμενο που υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeSelectionListener.html|TreeSelectionListener]]. | * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeSelectionEvent.html|TreeSelectionEvent]]:** events που συνδέονται με επιλογή κόμβων του δένδρου. Τα events αυτά λαμβάνονται μέσα από ένα αντικείμενο που υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeSelectionListener.html|TreeSelectionListener]]. | ||
* **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelEvent.html|TreeModelEvent]]:** events που συνδέονται με μεταβολή της δομής του δένδρου. Τα events αυτά λαμβάνονται μέσα από ένα αντικείμενο που υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelListener.html|TreeModelListener]]. | * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelEvent.html|TreeModelEvent]]:** events που συνδέονται με μεταβολή της δομής του δένδρου. Τα events αυτά λαμβάνονται μέσα από ένα αντικείμενο που υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelListener.html|TreeModelListener]]. | ||
+ | |||
+ | === TreeSelectionEvents === | ||
+ | |||
+ | Σε όλα τα events που συνδέονται με ένα αντικείμενο μπορείτε να πάρετε το αντικείμενο το οποίο συνδέεται με το event μέσα από την μέθοδο ''public Object getSource()'' της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/util/EventObject.html|EventObject]]. Εκτός της παραπάνω μεθόδου, οι μέθοδοι που υποστηρίζει κάθε event αυτού του τύπου είναι τα εξής: | ||
+ | |||
+ | <code java> | ||
+ | Object cloneWithSource(Object newSource) | ||
+ | //Returns a copy of the receiver, but with the source being newSource. | ||
+ | |||
+ | TreePath getNewLeadSelectionPath() | ||
+ | //Returns the current lead path. | ||
+ | |||
+ | TreePath getOldLeadSelectionPath() | ||
+ | //Returns the path that was previously the lead path. | ||
+ | |||
+ | TreePath getPath() | ||
+ | //Returns the first path element. | ||
+ | |||
+ | TreePath[] getPaths() | ||
+ | //Returns the paths that have been added or removed from the selection. | ||
+ | |||
+ | boolean isAddedPath() | ||
+ | //Returns whether the path identified by getPath was added to the selection. | ||
+ | |||
+ | boolean isAddedPath(int index) | ||
+ | //Returns whether the path at getPaths()[index] was added to the selection. | ||
+ | |||
+ | boolean isAddedPath(TreePath path) | ||
+ | //Returns whether the specified path was added to the selection. | ||
+ | </code> | ||
+ | |||
+ | Στο δένδρο του τρέχοντος παραδείγματος μας που υποστηρίζει το μοντέλο επιλογής κόμβων ''SINGLE_TREE_SELECTION'' η μόνη μέθοδος που σας χρειάζεται είναι η getPath() από την οποία λαμβάνεται το [[http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreePath.html|TreePath]] του κόμβου που επιλέξατε. | ||
+ | |||
+ | Αντίστοιχα, το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeSelectionListener.html|TreeSelectionListener]] υποστηρίζει μόνο μία μέθοδο η οποία καλείται κάθε φορά που επιλέγεται νέος κόμβος, όπως φαίνεται παρακάτω. | ||
+ | <code java> | ||
+ | void valueChanged(TreeSelectionEvent e) | ||
+ | Called whenever the value of the selection changes. | ||
+ | </code> | ||
+ | |||
+ | === TreeModelEvents === | ||
+ | |||
+ | Τα events [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelEvent.html|αυτού του τύπου]] δημιουργούνται όταν έχουμε μεταβολή στην δομή του δένδρου. Σε αυτή την περίπτωση θα χρειαστείτε μία κλάση που υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TreeModelListener.html|TreeModelListener]] για να λάβετε τις μεταβολές στη δομή του δένδρου. Ο συγκεκριμένος Listener ορίζει τις παρακάτω μεθόδους. | ||
+ | |||
+ | <code java> | ||
+ | void treeNodesChanged(TreeModelEvent e) | ||
+ | //Invoked after a node (or a set of siblings) has changed in some way. | ||
+ | |||
+ | void treeNodesInserted(TreeModelEvent e) | ||
+ | //Invoked after nodes have been inserted into the tree. | ||
+ | |||
+ | void treeNodesRemoved(TreeModelEvent e) | ||
+ | //Invoked after nodes have been removed from the tree. | ||
+ | |||
+ | void treeStructureChanged(TreeModelEvent e) | ||
+ | //Invoked after the tree has drastically changed structure from a given node down. | ||
+ | </code> | ||
+ | |||
+ | ==== Αλλάζοντας τα εικονίδια ενός αντικειμένου ==== | ||