Tree Editors and Renderers

What I am currently trying to implement is a tree editor renderer that displays label and a text field next to a tree node.
The label contains text describing the contents of the text field to the right.
The requirement is that the user can click in the textfield area and type a new value, which when they press return is accepted.
My problem is that in order to detect single clicks in the textfield area to enable the editor for that tree node, I am implementing an Immediate Editor along the lines in the Geary Swing Book.
However, a method to calculate the correct offset is not working:
PMSPropertyBrowserTreeCellRenderer.getPropertyValueTextFieldOffset fails to calculate the correct value as two things appear to fail
1. the "lastRow" member of the Tree is not the last component selected
2. the call to obtain the Graphics class from the renderer's panel always returns null
From Immediate Editor
* Provides the means to edit a cell immediately with a mouse click
* @param event
* @return true if the event is of the right type
protected boolean canEditImmediately(EventObject event)
boolean retval = false;
if (event instanceof MouseEvent)
MouseEvent me = (MouseEvent)event;
retval = inTextFieldHitRegion(me);
return retval;
* Should determine if the pointer is in the region of the property text field
* @param me
* @return id the mouse pointer is in the text field
private boolean inTextFieldHitRegion(MouseEvent me)
// obtain the place in the tree where this mouse event came from
TreePath path = tree.getPathForLocation(me.getX(), me.getY());
PMSPropertyBrowserTreeNode node =
(PMSPropertyBrowserTreeNode)path.getLastPathComponent();
boolean retval = false;
// if the node is a leaf
if (node.isLeaf())
// determine if mouse point is in the JTextField part of the renderer component
Rectangle bounds = tree.getRowBounds(this.lastRow);
Dimension textFieldOffset = renderer.getPropertyValueTextFieldOffset();
bounds.translate(
offset + textFieldOffset.width,
textFieldOffset.height);
retval = bounds.contains(me.getPoint());
return retval;
public boolean shouldSelectCell(EventObject event)
GUILog.log.writeLog(
GUILog.logTypes.ADMINISTRATIVE_EVENT,
"shouldSelectCell called");
boolean retval = false;
if (event instanceof MouseEvent)
MouseEvent me = (MouseEvent)event;
TreePath path = tree.getPathForLocation(me.getX(), me.getY());
PMSPropertyBrowserTreeNode node =
(PMSPropertyBrowserTreeNode)path.getLastPathComponent();
boolean inField = !inTextFieldHitRegion(me);
retval = node.isLeaf() || !inTextFieldHitRegion(me);
return retval;
... end from ImmediateEditor
import java.awt.*;
import javax.swing.*;
import javax.swing.JTree;
import javax.swing.tree.*;
import java.awt.Component;
public class PMSPropertyBrowserTreeCellRenderer extends DefaultTreeCellRenderer
private JPanel propertyPanel = new JPanel();
private JLabel propertyValueLabel = new JLabel();
protected JTextField propertyValueTextField = new JTextField();
private Component spacer = Box.createHorizontalStrut(5);
public PMSPropertyBrowserTreeCellRenderer()
super();
propertyPanel.setBackground(UIManager.getColor("Tree.textBackground"));
setOpaque(false);
propertyValueTextField.setOpaque(false);
propertyValueTextField.setBorder( BorderFactory.createLoweredBevelBorder());
propertyValueTextField.setText("<empty>");
propertyPanel.setOpaque(false);
propertyPanel.setLayout(new FlowLayout(FlowLayout.CENTER,0,0));
propertyPanel.add(this);
propertyPanel.add(spacer);
propertyPanel.add(propertyValueTextField);
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
* Gives the offset for the tree node as far as the text component
* Currently the graphics reference returns null.
* @return an offset into the text field component
public Dimension getPropertyValueTextFieldOffset()
Graphics g = propertyPanel.getGraphics();
int offset = 0;
if (g != null)
try
FontMetrics fm = g.getFontMetrics();
offset =
fm.stringWidth(getText()+spacer.getPreferredSize().width);
catch (Exception ex)
// nothing happens if we get an exception
finally
g.dispose();
} // end if
return new Dimension(offset,0);
} // end method

JTree has a setRowHeight(int rowHeight) method. "If
the specified value is less than or equal to zero the current cell
renderer is queried for each row's height."
(Say if you're reposting this in the Swing forum.)

Similar Messages

  • Differrent CELL Editors and Renderers in a Column

    Is it possible to have different cell editors and renderers within a single column? I would like to have text, CheckBox and ComboBox on different rows and within the same column.
    If yes, pls point me to somthing that describes this process.

    One thing that is often overlooked,due to a poor naming choice by Sun, is that a Renderer is not forced to return this as the component that will ultimately paint the cell: the only job of a cell renderer (as per the interface TableCellRenderer ) is to provide a component to do the painting. It is free to re-used the same component as much as possible (as a memory optimization), but it can also return either JComponent out of a set of 3.
    For example:
    public class MyRenderer implements TableCellRenderer {
        private JLabel componentThatRendersFoos;
        private JLabel componentThatRendersBars;
        public void getTableCellRendererComponent(...) {
            if (whatever criterion that identifies the cell as a foo) {
                componentThatRendersFoos.setBackground(...);
                return componentThatRendersFoos;
            else if (whatever criterion that identifies the cell as a bar) {
                componentThatRendersBars.setBackground(...);
                return componentThatRendersBars;
        }And similarly for editors.
    This has the advantage to enable to configure the renderer without havingto subclass JTable.
    Edited by: jduprez on Jan 20, 2011 10:51 PM
    Here is a reference to a discussion about the mixed concepts in renderers: {message:id=9161690}

  • Is it OK to re-use 1 instance of editors and renderers?

    Hi,
    The simple version of the question, is can I make 1 instance of my custom cell editor and cell renderer classes and safely use it in all my JTable instances?
    For example, I have a DateRenderer class, and instantiate it in a static member, and use it in all Date columns and tables, many of which will be instatiated at one time. If a column needs a non-default format, then I guess I'd create a special instance for it, other wise it would use the default instance.
    It seems to be OK so far, but but my program hasn't received any serious usage yet.
    As to why, I'm thinking this way, I've been messing around with CellEditors and renderers and despite wanting to use default functionality whenver possible, I find that I'm using custom versions for every situation... so if possible, I'd like to keep the number of instances to a minimum.
    Regards
    Iain

    OK, I see what you mean.
    Stop cell editing on focus lost isn't the default behaviour, but I've had to use it anyway (it seems to make sense).
    The reason I asked is that, to get the behaviour that I want, it looks like I'll have to have my custom renderers and editors on every column of every table so I'd like to avoid unneccessary instantiation.
    I'm aiming for a system where:
    - 1 click selects the row (default behaviour),
    - 2 clicks starts editing the cell (also default),
    - but tabbing or pressing enter after editing a cell keeps you in editing mode.
    I don't suppose that many people here have had experience with this, but entering Japanese (and presumably other non ascii type character sets) using MS's IME doesn't work very well with the standard JTable behaviour. If you don't double click, the entered japanese text appears in a little IME window somewhere on the screen (no neccessarily near the editing cell) and just gets lost when you press enter. You have to double click every time, and I can't see the users accepting that.
    I'll be investigating this over tme, and hopefully will be able to get it working smoothly.
    Thanks,
    Iain

  • Good Explanations for Editors and Renderers

    Hi
    I need to write some custom renderers and editors for both trees and tables for a project I'm working on. I've looked at the Java Swing Tutorial, but it doesn't really explain how they are coded or how they work etc.
    I've search the web and all the examples I've found don't explain how they work etc (lack of comments etc).
    My needs are to use both panels with lots of objects and thing like Check boxes.
    from the stuff I've tried doing, I've been getting some very strange results and bits disappearing etc. I'll try to put together a simple example and post it.
    Thanks for your help.
    Nick.

    Hi
    Apologies for the late response.
    That link was most useful.
    I tried searching for one relating to trees as opposed to tables, but couldn't find one.
    Is there any major differences between renderers for trees and tables or are they fundamentally the same.
    Thanks.
    Nick.

  • Cell editors  and renderers confusion

    HI i went thru some code recently but cud not understand why he is doin that , here is the step
    creates editor e1
    creates renderer r1
    editor e1 has renderer r1 as member var ie we can refer it as e1.r1
    in the getTableCellEditorComponent()of e1 method he is returning renderer r1.
    table.setCellRenderer(e1)
    i am just confused , is ther any advantage of this approach?
    am i clear, 7

    I can't see any advantage and find this approach rather confusing.
    In my opinion, renderer and editor should be separated from each other.
    G.

  • Setting Dialog, Tree Node and Menu Font in JDeveloper 11.1.1.4/11.1.1.5

    Hi,
    I'm near sighted and thus dependent on being able to choose larger fonts. For the code editor, this poses no problem. For the widgets in the views surrounding the editor (containing tree nodes) and dialogs (with the Preferences dialog being one example), the font is very small at high screen resolutions (I don't want to resort to a lower resolution since I would like the fonts to appear as detailed as possible).
    Is there any way to override the menu, tree node, and dialog font via command line switches and/or property/config files during JDeveloper startup in a platform independent way?
    If it can't be done platform independently, what are the necessary steps on Linux (probably for the GTK lib) and Windows?
    Thanks in advance!
    Kind regards,
    Holger

    I previously developed under full screen option and my PC resolution was 1600x1200. But when the application was ran on other screens it was displaying with some page contents being cut out. It was due to other machines running on lower resoultion. I will need now redesign the pages to run on user defined lower resolution of 1280x1024. How do I setup Jdeveloper design tab to show for 1280x1024.
    Thanks
    Edited by: user5108636 on Feb 14, 2011 5:23 PM

  • Custom JTable cell editors and persistence

    I have a JTable with an underlying data model (an extension of AbstractTableModel) that uses custom cell editors in the last column. The cell editor in that column, for a given row, depends on the value selected in another column of the same row. The cell editors include text, date, list, and tree editors (the last one in a separate dialogue). The number of rows is changeable.
    I have need to persist the data for a populated table from time to time, for restoration later on. I've achieved that, such that the data model is recreated, the table appears correct, and the appropriate cell editors activated (by creating new instances of the editors' classes).
    However, my problem is that the (custom) cell editors do not reflect the data in the model when editing mode is begun the first time after restoration. Eg. the text editor is always empty, the list editor shows the first item, and no node is selected in the tree editor.
    If I've restored the model correctly, should the editors properly reflect the underlying data when they are set to editing mode?
    I suspected not, and thus tried to explicitly 'set' the correct values immediately after each editor is recreated ... but to no avail.
    Does anyone have any thoughts, or experience with something similar? I'm happy to supply code.

    You can use html tags within Swing, so I think you can do the following:
    * MyRenderer.java
    * Created on 26 April 2007, 10:27
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package newpackage;
    import java.awt.Component;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.SwingConstants;
    import javax.swing.table.TableCellRenderer;
    * @author CS781RJ
    public class MyRenderer extends JLabel implements TableCellRenderer
        public MyRenderer()
            setHorizontalTextPosition(SwingConstants.RIGHT);
            setIconTextGap(3);
            setOpaque(true);
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean cellHasFocus, int row, int column)
            if (isSelected)
                setBackground(table.getSelectionBackground());
                setForeground(table.getSelectionForeground());
            else
                setBackground(table.getBackground());
                setForeground(table.getForeground());
            if (value instanceof String)
                if ((value != null) && (value.toString().length() > 0))
                    System.out.println("Value: " + value.toString());
                    setFont(new java.awt.Font("Tahoma", 0, 11));
                    setText("<html>" + value.toString().replaceAll("\n", "<br>") + "</html>");
            return this;
    }In the class that has the JTable, use the code AFTER declaring the values, columns, etc:
    jTable1.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
    jTable1.setValueAt("Riz\nJavaid", 0, 0);One thing I haven't done is to resize the cell heights, make sure this is done.
    Hope this helps
    Riz

  • Mismatch in linenumbers of ABAP editor and debugger

    Hi all,
    although the ABAP program is shown as active in our editor, we sometimes have a mismatch in line numbers between ABAP editor and debugger.
    E.g.: FORM ITEM_PRINT in report RVADOR01 starts at linenumber 1403 in our ABAP editor. Debugger shows line number 1410 as startline.
    When I try to set a breakpoint in editor at line 1403, the breakpoint is displayed in line 1410 of the editor.
    I cannot navigate forward to FORM ITEM_PRINT and when I select FORM ITEM_PRINT in the objects tree in SE80, cursor jumps to line 118 of source code.
    We use new editor and debugger and have installed SAP ECC 6.0 EHP3.
    Any      suggestions?
    Regards,
    Hubert
    Edited by: Hubert Heitzer on Jul 30, 2009 7:36 AM
    Edited by: Hubert Heitzer on Jul 30, 2009 7:41 AM

    Hi Lakshman,
    thx a lot  for your help, nearly all my Problems are solved.
    Generating a new navigation index cleared problems with forward navigation and objects tree in SE80.
    I applied OSS Note 1279209.
    SAP Note 986915 is for SAP_BASIS 640, we are at 700, so I didnt apply it.
    Mismatch in line numbers between ABAP editor and debugger in some source codes still remains.
    I take report RVADOR01 again as example - like in my startpost:
    In my editor FORM ITEM_PRINT starts in line 1403 of RVADOR01
    When I set a breakpoint in this form, eg.
    CALL FUNCTION 'WRITE_FORM'           "First header
    and my debugger stops at this BP, I see that FORM ITEM_PRINT starts at line 1389 (now!!! unlike before at my startpost, which was 1410).
    Regards,
    Hubert

  • Help please! imac is completely full, FPC wont let me render! I'm a video editor and have over 70 gb worth of videos on the imac which all need to be kept but now beloved imac is full, only had it for 5 months! need external hard drive every 5 months??

    FPC wont let me render! I'm a video editor and have over 70 gb worth of videos on the imac which all need to be kept for various clients/backup/original versons but now beloved imac is full, only had it for 5 months! Will Ineed external hard drive every 5 months?? This can't be I've already resorted to getting rid of unsed applications such as garage band, iTunes,address book ect. I've trashed everything I could. what next ???
    My video files are massive, converting them to a different format doesn't reduce the size of them it just turns them into mp4 or apple pro res ect
    This iMac is for work only so there's no pictures, no music, no conacts, no messenger, no games, nonothing but videos!!

    Have a look at this: http://grandperspectiv.sourceforge.net/
    It will show you exactly what is taking up all of your space.
    You also may want to consider some kind of external storage just for your video projects.

  • I am using both PSE 13 and Lightroom 5.  When I use Lightroom as an external editor and save the photo, it shows up in PSE13 as an edited file but does not look any different.  Why doesn't it appear edited?

    I am using both PSE 13 and Lightroom 5.  When I use Lightroom as an external editor and save the photo, it shows up in PSE13 as an edited file but does not look any different.  Why doesn't it appear edited?

    People who have Photoshop, but don't have Lightroom, need ACR so that they can use Raw files. Without ACR they could do nothing with those (they may also like having ACR so that they can work on other kinds of image using the same kinds of adjustments and techniques, as are used with Raw files).
    People who have Lightroom, can get access to Raw files regardless whether ACR is present or not. They can use Lightroom on other kinds of image also, using the same methods. LR can pass images directly into Photoshop without passing via ACR (or else does so transparently, which amounts to substantially the same thing).
    ACR does not, strictly speaking, even need to be installed for this external editing to happen. In fact, not even PS needs to be - since a different image editor can be used instead, while still retaining the Adobe Raw conversion etc.
    Lightroom "subcontracts out" specialised external tasks, in this workflow, but is still your "main contractor": the image is otherwise located, viewed, managed, adjusted/presented and output entirely using LR.
    So IMO we can divide image processing into:
    operations that involve pixels and layers and layer masks and adjustment layers etc (of the kind done inside Photoshop)
    operations that involve parametric edits (of the kind done in ACR where you are not using a Lightroom based workflow; otherwise, done inside Lightroom)
    When PS is called in, that's because those tasks are impossible or unsuitable to do in Lightroom. But those tasks can't be done in ACR either - by definition, since LR and ACR have exactly the same image processing "feature set".
    Lightroom is irrelevant to the Bridge + ACR + PS workflow. This workflow requires both your PS and your ACR to be current enough, to support your Raw format etc.
    ACR and Bridge are irrelevant to the LR + (image editor) workflow. It is in this case, only LR which needs to be current enough to support your Raw format etc.
    RP

  • Error when trying to access the RBAC User editor and Message tracking

    Hi,
    I am getting an error when trying to access the RBAC User editor and Message tracking on the Web Mgmt interface. I verified that the admin account trying to access is in the Organization Management group and has the correct Role Assignment Policy applied.
    I searched through this thread below and saw that matching the msExchRoleLink and msExchUserLink attributes fixed the issue. 
    https://social.technet.microsoft.com/Forums/exchange/en-US/fc568cc6-8691-4127-b70b-bcc82f9b1f7f/first-2010-cas-server-no-administrator-rights-emc-permissions-gone?forum=exchange2010
    However I have another environment where this is not the case and works just fine; the msExchUserLink attribute has a value of CN=Organization Management,OU=Microsoft Exchange Security Groups,DC=Domain,DC=Local which is different as per the issue outlined in
    the above thread so I am not convinced that this will work and also don’t want to blindly edit something in adsiedit without being sure.
    I then checked the event logs on the server and saw the below error logged;
    Current user: 'Domain/Server Services Accounts/administrator'
    Request for URL 'https://server.domain.com/ecp/default.aspx?p=AdminDeliveryReports&exsvurl=1' failed with the following error:
    System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> Microsoft.Exchange.Management.ControlPanel.UrlNotFoundOrNoAccessException: The page may not be available or you might not have permission to open the
    page. Please contact your administrator for the required credentials. For new credentials to take effect, you have to close this window and log on again.
       at Microsoft.Exchange.Management.ControlPanel._Default.CreateNavTree()
       at Microsoft.Exchange.Management.ControlPanel._Default.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       --- End of inner exception stack trace ---
       at System.Web.UI.Page.HandleError(Exception e)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest()
       at System.Web.UI.Page.ProcessRequest(HttpContext context)
       at ASP.default_aspx.ProcessRequest(HttpContext context)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    Microsoft.Exchange.Management.ControlPanel.UrlNotFoundOrNoAccessException: The page may not be available or you might not have permission to open the page. Please contact your administrator for the required credentials. For new credentials to take effect, you
    have to close this window and log on again.
       at Microsoft.Exchange.Management.ControlPanel._Default.CreateNavTree()
       at Microsoft.Exchange.Management.ControlPanel._Default.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    I then had a look at the IIS permissions for ecp and owa. The account did not have permissions so I added them there but still got the same error. I’ve also tried all of the above with a newly-created account but still got the same issue.
    Any ideas as to what the above event log is specifically referring to?

    Hi,
    From your description, I would like to clarify the following thing:
    If you want to search message tracking logs, the account you use should be a member of the role groups below:
    Organization Management role group, Records Management role group, Recipient Management role group.
    Hope this can be helpful to you.
    Best regards,
    Amy Wang
    TechNet Community Support

  • I imported a video I make in another program and I played it back in the video editor and I like the pan and zoom that was added by the program how do I save a copy with the effect of Premiere elements 12

    I imported a video I make in movie maker program and I played it back in the premiere video editor and I like the pan and zoom that was added by the program how do I save a copy with the effect of Premiere elements 12
    all I did was played it back how do I save that and make a new version of the video beacause when I save a copy the effect look I was trying to save was not there.
    Rodney
    [personal information removed... Mod - https://forums.adobe.com/docs/DOC-3731]
    [This is an open forum, not Adobe support, please do not post personal information]
    [If you are posting using email, please turn your 'sig file' function OFF for posting]

    silkman1
    I would be glad for the opportunity to customize a Premiere Elements 12 answer to your Premiere Elements 12 issue.
    But, I want to make sure that we are together on the details. This is my understanding of what you have written. Please review and let me
    know if I am misinterpreting anything that you have written.
    You have a video created in Windows Movie Maker.
    How did you output the video from Windows Movie Maker...wmv or mp4, what was the frame size and frame rate of that export?
    Next you import that video into Premiere Elements 12 (can we assume that this is on Windows 7, 8, or 8.1 64 bit?)
    From what you wrote, you have applied a pan and zoom effect to your video in Premiere Elements.
    Now you go to export the Premiere Elements 12 Timeline content with your video with the pan and zoom applied.
    But, the pan and zoom effect is not seen in playback of the export.
    Is all of the above correct so far?
    If so....we are going to need some more details from you...
    a. What is the project preset that you or the project are setting to match the properties of the video coming from Movie maker? See Edit Menu/Project Settings/General and the readings for Editing Mode, Timebase, Frame Rate, and Pixel Aspect Ratio even if the fields look grayed out.
    b. Are you applying the pan and zoom effect with the Pan and Zoom Tool, fx Effects Presets, or keyframing the Scale (for Zoom) and
    Position (for Pan) in the Motion Panel expanded?
    c. What are you selecting as your export in Publish+Share/. Please give details...are you using default settings or customizing the export
    setting under the Advanced Button/Video Tab and Audio Tab of the preset selected?
    I am suspecting some sort of mismatch of your project settings or some problems with working with the Pan and Zoom tool. I need
    your answers to help me help you. If I have written anything that you do not understand, please let me know. I will re-write if necessary
    so that we are in sync to resolve the issue.
    Thanks.
    ATR

  • I want to get another 4s and use it not as a phone, but only as a video camera and editor and hook it up only with wifi. i would sync it to itunes so i can pay for apps and upload. would this work, or must it be connected to a phone carrier?

    I want to get another 4s and use it not as a phone, but only as a video camera and editor and hook it up only to wifi. i would sync it to itunes so i can pay for apps and upload. would this work, or must it be connected to a phone carrier?

    Trust me when I say this coming from 20 years of experience.
    Get a powered external drive, format it 1 Partition Option: GUID and OS X Extended Journed as the format in Disk Utility.
    Download and install Carbon Copy Cloner, clone internal drive to external drive.
    Set a schedule to remind you to do it at least once a week, keep it near your charger.
    When you plug your charger in, do plug the clone and power the machine up, set the display to sleep only,
    CCC will do the rest.
    If you want to boot from it, hold the option/alt and select it Startup Manager.
    I've seen many TimeMachine and TimeCapsule nightmares and so far haven't seen a problem from anyone using a bootable clone.
    It's simple, it's easy, it's more reliable and more powerful than what Apple does and it only takes plugging in a extra cable.
    Make as many clones as you want, keep them time seperated, off site etc. etc.
    Cables don't have network issues, clones can be verified in seconds merely by booting from them.
    Clones protect your productivity, your up in seconds on a clone despite even the hard drive dying.
    Software problem? No sweat, boot of the clone and reverse clone your problems away.
    If you want to fuss and muss with half implemented TimeMachine and TimeCapsule network headaches then prepare to suffer.
    I don't like to suffer, I bought a Mac not to suffer, but it appears you do with TimeMachine and TimeCapsule.
    Most commonly used backup methods

  • Custom tree node and DefaultTreeModel

    Hello,
    I would like to know if it's possible to use the following custom tree node with the DefaultTreeModel:
    class MyTreeNode extends DefaultMutableTreeNode{
      private String _argument = null;
      public MyTreeNode(){}
      public MyTreeNode(Object node, String argument){
         super(node);
          _argument = argument;
    }I have tried it and it's not working but I think in theory it should work. Please correct me if I'm wrong.
    The problem is that the tree won't display or insert the custom node when the insertNodeAt(...) method of
    the DefaultTreeModel is called. I also tried using a custom tree listener and calling the .reload() method directly.
    Any help will be very appreciated.
    Thanks in advanced.

    Are you sure it's not being inserted into the model,
    and just not being displayed?
    Are you calling nodesWereInserted() after your
    insertion?Thanks for your reply.
    I've modified my app. so that the following method will populate the tree for testing only:
      public void populateTree()
        MyTreeNode root = new MyTreeNode("Root Node", "test");
        DefaultTreeModel treeModel = new DefaultTreeModel(root);
        JTree tree = new JTree(treeModel);
        tree.setEditable(true);
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.setShowsRootHandles(true);
        JScrollPane scrollPane = new JScrollPane(tree);
        setLayout(new GridLayout(1,0));
        add(scrollPane);
        int childIdx[] = {0,1};
        String p1Name = new String("Parent 1");
        String p2Name = new String("Parent 2");
        String c1Name = new String("Child 1");
        String c2Name = new String("Child 2");
        MyTreeNode p1 = new MyTreeNode(p1Name, "test");
        MyTreeNode p2 = new MyTreeNode(p2Name, "test");
        MyTreeNode c1 = new MyTreeNode(c1Name, "test");
        MyTreeNode c2 = new MyTreeNode(c2Name, "test");
        treeModel.insertNodeInto(p1, root, 0);
        treeModel.insertNodeInto(p2, root, 1);
        treeModel.nodesWereInserted(root, childIdx);
        treeModel.insertNodeInto(c1, p1, 0);
        treeModel.insertNodeInto(c2, p1, 1);
        treeModel.nodesWereInserted(p1, childIdx);
        treeModel.reload();
    }And the result is that the "Root Node" will be displayed with "Parent1" and "Parent2" but "Parent1" won't have any children. Furthermore, if I try to remove "Parent1" using:
    treeModel.removeNodeFromParent(p1);I will get an exception saying that node p1 has no parent, which suggests that the parent/child relation
    is not being assigned by the model, even though the nodes (p1, p2) are displayed in the tree showing "Root node" as the parent. This is very strange.
    Please help.

  • Trying to override the default af:tree expanded and collapsed icons

    Hi,
    I initially hijacked a thread from 2010 that was vaguely similar to what I need to ask, but a kind forum moderator split my post out to stand on its own merits.
    I am trying to override the default af:tree expanded and collapsed icons I am using the following styles for my af:tree but they are not reflecting any thing on my tree with the styleclass orgType.
    af|tree.orgType::expanded-icon {
    content: url("../images/ac-expand.png");
    cursor: default;
    af|tree.orgType::collapsed-icon {
    content: url("../images/ac-collapsed.png");
    cursor: default;
    af|tree::expanded-icon {
    content: url("../images/folder_open.png");
    cursor: default;
    af|tree::collapsed-icon {
    content: url("../images/folder_close.png");
    cursor: default;
    After working for long hours I realized that there is some problem with af:tree and treeTable. They are not taking the styles where as for the other components, every thing works fine. Is there any way to achieve the task. Could you suggest any alternative way to do this. Thanks in advance. Your suggestions for this task can really help me and my team a lot.
    Regards,
    Krishna Sumanth.

    Hi,
    do the icons show without the style class reference used in the skin file? If so, then the style class for this component might be rendered differently for the tree, e.g.
    .orgType af|tree ...
    Frank

Maybe you are looking for