swing:tree
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
swing:tree [2015/05/17 17:30] – gthanos | swing:tree [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 33: | Line 33: | ||
</ | </ | ||
- | Από τις παραπάνω μεθόδους είναι προφανές ότι σε ένα κόμβο μπορείτε να προσθέσετε άλλους κόμβους ή να αφαιρέσετε κόμβους ή να μετακινήσετε κόμβους. Ένας απλός τρόπος ώστε οι κόβμοι σας να υλοποιούν το συγκεκριμένο interface είναι να ανήκουν στην κλάση [[http:// | + | Από τις παραπάνω μεθόδους είναι προφανές ότι σε ένα κόμβο μπορείτε να προσθέσετε άλλους κόμβους ή να αφαιρέσετε κόμβους ή να μετακινήσετε κόμβους. Ένας απλός τρόπος ώστε οι κόμβοι σας να υλοποιούν το συγκεκριμένο interface είναι να ανήκουν στην κλάση [[http:// |
+ | <code java> | ||
+ | DefaultMutableTreeNode top = | ||
+ | new DefaultMutableTreeNode(" | ||
+ | createNodes(top); | ||
+ | //Create a tree that allows one selection at a time. | ||
+ | tree = new JTree(top); | ||
+ | tree.setEditable(true); | ||
+ | tree.getSelectionModel().setSelectionMode | ||
+ | (TreeSelectionModel.SINGLE_TREE_SELECTION); | ||
+ | </ | ||
+ | |||
+ | Ο παραπάνω κώδικας δημιουργεί το στοιχείο της ρίζας με τον όνομα //top// και με βάση αυτό δημιουργεί και τα υπόλοιπα αντικείμενα μέσω της μεθόδου '' | ||
+ | <code java> | ||
+ | tree.setEditable(true); | ||
+ | tree.getSelectionModel().setSelectionMode | ||
+ | (TreeSelectionModel.SINGLE_TREE_SELECTION); | ||
+ | </ | ||
+ | |||
+ | Οι επιλογές που έχετε αναφορικά με τον αριθμό των κόμβων που μπορείτε να επιλέξετε είναι οι παρακάτω: | ||
+ | <code java> | ||
+ | static int CONTIGUOUS_TREE_SELECTION | ||
+ | // | ||
+ | static int DISCONTIGUOUS_TREE_SELECTION | ||
+ | // | ||
+ | static int SINGLE_TREE_SELECTION | ||
+ | //Μόνο ένας κόμβος μπορεί να επιλεγεί κάθε φορά. | ||
+ | </ | ||
+ | |||
+ | Παρακάτω δίνεται ένα τμήμα της μεθόδου // | ||
+ | <code java> | ||
+ | private void createNodes(DefaultMutableTreeNode top) { | ||
+ | DefaultMutableTreeNode category = null; | ||
+ | DefaultMutableTreeNode book = null; | ||
+ | |||
+ | category = new DefaultMutableTreeNode(" | ||
+ | top.add(category); | ||
+ | |||
+ | //original Tutorial | ||
+ | book = new DefaultMutableTreeNode(new BookInfo | ||
+ | ("The Java Tutorial: A Short Course on the Basics", | ||
+ | " | ||
+ | category.add(book); | ||
+ | |||
+ | //Tutorial Continued | ||
+ | book = new DefaultMutableTreeNode(new BookInfo | ||
+ | ("The Java Tutorial Continued: The Rest of the JDK", | ||
+ | " | ||
+ | category.add(book); | ||
+ | |||
+ | //JFC Swing Tutorial | ||
+ | book = new DefaultMutableTreeNode(new BookInfo | ||
+ | ("The JFC Swing Tutorial: A Guide to Constructing GUIs", | ||
+ | " | ||
+ | category.add(book); | ||
+ | | ||
+ | .... | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Από τον παρακάτω κατασκευαστή της κλάσης [[http:// | ||
+ | <code java> | ||
+ | public DefaultMutableTreeNode(Object userObject); | ||
+ | </ | ||
+ | Έτσι στη μέθοδο createNodes αποθηκεύονται Strings, αν πρόκειται για κόμβους που αναφέρονται στις κατηγορίες των βιβλίων ή αντικείμενα της κλάσης // | ||
+ | <code java> | ||
+ | public Object getUserObject() | ||
+ | </ | ||
+ | Σε αυτή την περίπτωση θα χρειαστείτε να γνωρίζετε την κλάση του αντικειμένου το οποίο επιστρέφει η παραπάνω μέθοδος και να εφαρμόσετε κατάλληλο typecasting. | ||
+ | |||
+ | ==== Ανταποκρινόμενοι στα events ενός δένδρου ==== | ||
+ | |||
+ | Ένα δένδρο μπορεί να παράγει δύο τύπους //events//: | ||
+ | * **[[http:// | ||
+ | * **[[http:// | ||
+ | |||
+ | === TreeSelectionEvents === | ||
+ | |||
+ | Σε όλα τα events που συνδέονται με ένα αντικείμενο μπορείτε να πάρετε το αντικείμενο το οποίο συνδέεται με το event μέσα από την μέθοδο '' | ||
+ | |||
+ | <code java> | ||
+ | Object | ||
+ | //Returns a copy of the receiver, but with the source being newSource. | ||
+ | |||
+ | TreePath | ||
+ | //Returns the current lead path. | ||
+ | |||
+ | TreePath | ||
+ | //Returns the path that was previously the lead path. | ||
+ | |||
+ | TreePath | ||
+ | //Returns the first path element. | ||
+ | |||
+ | TreePath[] | ||
+ | //Returns the paths that have been added or removed from the selection. | ||
+ | |||
+ | boolean | ||
+ | //Returns whether the path identified by getPath was added to the selection. | ||
+ | |||
+ | boolean | ||
+ | //Returns whether the path at getPaths()[index] was added to the selection. | ||
+ | |||
+ | boolean | ||
+ | //Returns whether the specified path was added to the selection. | ||
+ | </ | ||
+ | |||
+ | Στο δένδρο του τρέχοντος παραδείγματος μας που υποστηρίζει το μοντέλο επιλογής κόμβων '' | ||
+ | |||
+ | Αντίστοιχα, | ||
+ | <code java> | ||
+ | void valueChanged(TreeSelectionEvent e) | ||
+ | Called whenever the value of the selection changes. | ||
+ | </ | ||
+ | |||
+ | === TreeModelEvents === | ||
+ | |||
+ | Τα events [[http:// | ||
+ | |||
+ | <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. | ||
+ | </ | ||
+ | |||
+ | ==== Αλλάζοντας τα εικονίδια και την εμφάνιση στους κόμβους ενός δένδρου ==== | ||
+ | |||
+ | Ένα από τα βασικά πράγματα που πιθανόν θα χρειαστείτε είναι να μεταβάλλεται την εμφάνιση των κόμβων ενός δένδρου βάζοντας διαφορετικά εικονίδια για τους κόμβους που είναι φύλλα, για τους κόμβους που δεν είναι φύλλα, αλλά είναι επιλεγμένοι και ανοιχτοί ή για τους κόμβους που είναι κλειστοί. Για να το κάνετε αυτό θα χρειαστείτε ένα αντικείμενο που υλοποιεί το interface [[http:// | ||
+ | <code java> | ||
+ | DefaultTreeCellRenderer tRenderer = | ||
+ | new DefaultTreeCellRenderer(); | ||
+ | ImageIcon folderIcon = new ImageIcon( System.getProperty(" | ||
+ | tRenderer.setLeafIcon( folderIcon ); | ||
+ | tRenderer.setClosedIcon( folderIcon ); | ||
+ | tRenderer.setOpenIcon( folderIcon ); | ||
+ | tRenderer.setTextSelectionColor(Color.RED); | ||
+ | tree.setCellRenderer(tRenderer); | ||
+ | </ | ||
+ | |||
+ | | Προηγούμενο: | ||
- |
swing/tree.1431883847.txt.gz · Last modified: 2015/05/17 16:30 (external edit)