package sample;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
public class TreeExample
extends JFrame
{
public TreeExample()
{
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTree tree = new JTree();
final MyTreeCellRenderer cr = new MyTreeCellRenderer();
tree.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e)
{
}
public void mouseMoved(MouseEvent e)
{
JTree tree = (JTree)e.getSource();
int row = tree.getRowForLocation(e.getPoint().x, e.getPoint().y);
cr.setRow(row);
tree.repaint();
}
});
tree.setCellRenderer(cr);
add(tree);
}
/**
* @param args
*/
public static void main(String[] args)
{
new TreeExample().setVisible(true);
}
private class MyTreeCellRenderer extends DefaultTreeCellRenderer
{
private int row = -1;
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
{
JLabel label =(JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if(row == getRow()){
label.setForeground(Color.green);
}
return label;
}
/**
* @return the row
*/
public int getRow()
{
return row;
}
/**
* @param row the row to set
*/
public void setRow(int row)
{
this.row = row;
}
}
}