I hope this helps..
textField.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ke)
{
String enteredText = textField.getText().trim();
//Change entered text to lower case
if(enteredText.equals(""))
return;
enteredText= enteredText.toLowerCase();
//
expandAllRows(); //optional
DefaultMutableTreeNode rootN = (DefaultMutableTreeNode)tree.getModel().getRoot();
Enumeration df=rootN.breadthFirstEnumeration();
String enumElem="";
Vector nodeVector=new Vector();
DefaultMutableTreeNode tempN=new DefaultMutableTreeNode();
while(df.hasMoreElements())
{
tempN=(DefaultMutableTreeNode)df.nextElement();
nodeVector.addElement(tempN);
}
int startSearchPos=0;
if(enteredText.equals(nodeCaught))
{
startSearchPos = nodePos+1;
}
else
startSearchPos = 0;
if(startSearchPos >= nodeVector.size())
startSearchPos=0;
nodeVector.remove(0);
// Start looking out for the text from startSearchPos
boolean foundFlag = false;
if(found)
foundFlag = true;
found=false;
for(int vectorIndex=startSearchPos;vectorIndex<nodeVector.size();vectorIndex++)>
{
String nodeString=nodeVector.elementAt(vectorIndex).toString();
if( (nodeString.toLowerCase().startsWith(enteredText.toLowerCase())) )
{
//match found
nodePos=vectorIndex;
DefaultMutableTreeNode tempNod=(DefaultMutableTreeNode)(nodeVector.elementAt(vectorIndex));
tree.scrollPathToVisible( new TreePath(tempNod.getPath()) );//scrollPathToVisible
tree.setSelectionPath( new TreePath(tempNod.getPath()) );
found = true;
break;
}
else
{
found=false;
}
}// end of for loop
nodeCaught = enteredText;
}
}
});