please tell me what is wromg in this code ,i added the mouse listener to tree to select leaf checkbox beloning to the node.my problem is when click on label checkbox is selected and deselected,i donot want checkbox should be selected when clcik on label
code
import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import javax.swing.*;
import javax.swing.tree.*;
import java.util.*;
import java.awt.*;
import javax.swing.event.*;
public class SplitNodeTest
{
public JTree Tree=null;
private JScrollPane getContent()
{
DefaultMutableTreeNoderoot = new DefaultMutableTreeNode("Root");
SplitNoderoot1 = new SplitNode("Node 1", false);
SplitNoderoot2 = new SplitNode("Node 2", false);
root1.add(root2);
root.add(root1);
// root.add(new DefaultMutableTreeNode(new SplitNode("Node 1", false)));
// root.add(new DefaultMutableTreeNode(new SplitNode("Node 2", true)));
Tree= new JTree(newDefaultTreeModel(root));
Tree.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e) {
System.out.println("path");
//TreePath path = null;
//path = Tree.getSelectionPath();
int x = e.getX();
int y = e.getY();
int row = Tree.getRowForLocation(x, y);
TreePath path = Tree.getPathForRow(row);
System.out.println("path"+path);
//TreePath path = Tree.getSelectionPath();
//DefaultMutableTreeNode node = (DefaultMutableTreeNode)
// Tree.getLastSelectedPathComponent();
//Tree.getSelectionModel().setSelectionMode
//(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
if(path != null)
{
SplitNode node1=null;
DefaultMutableTreeNode node = (DefaultMutableTreeNode)Tree.getLastSelectedPathComponent();
// if(path.getLastPathComponent() instanceof DefaultMutableTreeNode)
//{
if(Tree.getLastSelectedPathComponent() instanceof SplitNode)
{
node1 = (SplitNode)path.getLastPathComponent();
boolean isSelected = !(node1.isSelected());
node1.setSelected(isSelected);
((DefaultTreeModel)Tree.getModel()).nodeChanged(node1);
}
}
//}
}
//DefaultMutableTreeNode node = (DefaultMutableTreeNode)
// Tree.getLastSelectedPathComponent();
/* if nothing is selected */
//if (node == null) return;
/* retrieve the node that was selected */
//Object nodeInfo = node.getUserObject();
/* React to the node selection. */
//}
}
);
Tree.setEditable(true);
Tree.setCellRenderer(new SplitNodeRenderer());
Tree.setCellEditor(new SplitNodeEditor());
return new JScrollPane(Tree);
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new SplitNodeTest().getContent());
f.setSize(360,300);
f.setLocation(200,200);
f.setVisible(true);
}
}
class SplitNodeextends DefaultMutableTreeNode
{
Stringname;
boolean value;
boolean IsSelected = false;
String pidstring;
//SplitNode node=null;
public SplitNode(Objecto, boolean isSelected)
{
super(o);
this.name = o.toString();
this.IsSelected =isSelected;
//this.value = isSelected;
}
public SplitNode(Objecto, boolean isSelected,String pidstring)
{
super(o);
this.name = o.toString();
this.IsSelected =isSelected;
this.value = isSelected;
this.pidstring = pidstring;
}
public void setSelected(boolean isSelected)
{
this.IsSelected = isSelected;
if (children != null)
{
Enumeration enum = children.elements();
while (enum.hasMoreElements()) {
SplitNode node = (SplitNode)enum.nextElement();
System.out.println(node);
node.setSelected(isSelected);
}
}
}
public boolean isSelected() {
return IsSelected;
}
}
class SplitNodeRenderer implementsTreeCellRenderer
{
JLabel label;
JCheckBox checkBox;
JTextField textField;
JPanel panel;
JTree Tree;
public SplitNodeRenderer()
{
label = new JLabel();
//this.Tree=tree;
checkBox = new JCheckBox();
checkBox.setBackground(UIManager.getColor("Tree.background"));
checkBox.setBorder(null);
textField =newJTextField();
textField.setEditable(false);
textField.setBackground(UIManager.getColor("Tree.background"));
textField.setBorder(null);
panel = new JPanel();
panel.setOpaque(false);
panel.add(checkBox);
panel.add(textField);
}
public Component getTreeCellRendererComponent(JTree tree,Objectvalue,boolean selected, boolean expanded,
boolean leaf,int row,boolean hasFocus)
{
DefaultMutableTreeNode node =(DefaultMutableTreeNode)value;
String stringValue = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
//this.Tree = tree;
if(value instanceof SplitNode)
{
SplitNode splitNode = (SplitNode)value;
checkBox.setSelected(splitNode.IsSelected);
//checkBox.setSelected(splitNode.isSelected());
//checkBox.setSelected(splitNode.isSelected());
textField.setText(stringValue);
return panel;
}
else
{
label.setText(stringValue);
return label;
}
/*Tree.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent event)
{
click(event);
}
});*/
}
}
class SplitNodeEditor extends AbstractCellEditor implements TreeCellEditor, ActionListener
{
JLabellabel;
JCheckBoxcheckBox;
JLabeltextField;
SplitNodesplitNode;
JComponent editedComponent;
JPanelpanel;
JTree Tree=null;
//Object value1;
public SplitNodeEditor()
{
label = new JLabel();
//this.Tree = tree;
checkBox = new JCheckBox();
//checkBox.addActionListener(this);
checkBox.setBackground(UIManager.getColor("Tree.background"));
checkBox.setBorder(null);
//checkBox.addMouseListener(new NodeSelectionListener(tree));
// checkBox.a
// Simple st = new Simple();
// st.Tree = tree;
// value1= value;
textField = new JLabel();
// textField.addActionListener(this);
textField.setBackground(UIManager.getColor("Tree.background"));
textField.setBorder(null);
panel = new JPanel();
panel.setOpaque(false);
panel.add(checkBox);
panel.add(textField);
}
public Component getTreeCellEditorComponent(JTreetree,Objectvalue,boolean isSelected, boolean expanded,boolean leaf,int row)
{
DefaultMutableTreeNodenode = (DefaultMutableTreeNode)value;
//String stringValue = tree.convertValueToText(value, isSelected, expanded, leaf, row);
//System.out.println(node);
if(value instanceof SplitNode)
{
splitNode = (SplitNode)value;
System.out.println("splitnode"+splitNode.pidstring);
checkBox.setSelected(splitNode.IsSelected);
//checkBox.setSelected(splitNode.isSelected());
//checkBox.setSelected(splitNode.isSelected());
textField.setText(splitNode.name);
String id = splitNode.pidstring;
System.out.println("id in applet"+id);
System.out.println("servlet output in applet");
//RootObject robj = new RootObject();
//robj.setRoot(id);
/*String location = "http://localhost:9082/flick/servlet/ImageServlet";
try
{
Viewer acrobat = new Viewer();
URL image_location = new URL(location);
URLConnection servletConnection = image_location.openConnection();
servletConnection.setUseCaches (false);
servletConnection.setDefaultUseCaches(false);
servletConnection.setDoOutput(true);
OutputStream output = servletConnection.getOutputStream();
ObjectOutputStream os = new ObjectOutputStream(output);
os.writeObject(robj);
InputStream input = servletConnection.getInputStream();
System.out.println("connected");
}
catch(Exception ex)
{
ex.printStackTrace();
}*/
return panel;
}
else
{
label.setText(splitNode.name);
return label;
}
}
public boolean isCellEditable(EventObject anEvent)
{
return true;
}
public void actionPerformed(ActionEvent e)
{
editedComponent =(JComponent)e.getSource();
super.stopCellEditing();
}
/* (non-Javadoc)
* @see javax.swing.CellEditor#getCellEditorValue()
*/
public Object getCellEditorValue()
{
if(editedComponent == textField)
splitNode.name = textField.getText();
//else
// splitNode.value = checkBox.isSelected();
returnsplitNode;
}
/* (non-Javadoc)
* @see javax.swing.tree.TreeCellEditor#getTreeCellEditorComponent(javax.swing.JTree, java.lang.Object, boolean, boolean, boolean, int)
*/
/* (non-Javadoc)
* @see javax.swing.tree.TreeCellEditor#getTreeCellEditorComponent(javax.swing.JTree, java.lang.Object, boolean, boolean, boolean, int)
*/
/*public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) {
// TODO Auto-generated method stub
return this;
}*/
}