Click here to Skip to main content
15,897,273 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I putted jpanel -that i called LayerPanel- in Jtree as a cell, this jpanel contains 4 Jlabels i have rerender the jtree cells by implementing TreeCellRenderer interface m question is, how can i catch the event for each component in jpanel ? i tries using TreeCellEditor but in didn't work

public class LayerPanelNode extends DefaultMutableTreeNode
{
	public static class LayerCellEditor extends AbstractCellEditor implements TreeCellEditor, ActionListener, MouseListener
    {       
        private LayerPanel layerpanel;
        private Object value;

        public LayerCellEditor(String layerName)
        {
        	layerpanel=new LayerPanel(layerName);
        	layerpanel.getNameLabel().addMouseListener(this);
        }

        public Object getCellEditorValue(){
            return layerpanel;
        }

        public void actionPerformed(ActionEvent e){//this is not called in my code
        	layerpanel = (LayerPanel) value;
            System.out.println("Pressed: " );
            stopCellEditing();
        }

        public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row){
        	layerpanel = (LayerPanel)value;
            layerpanel.getNameLabel().setText(value.toString());
            return layerpanel;
        }

        
        
        
		public void mouseClicked(MouseEvent e) {
			// TODO Auto-generated method stub
			 System.out.println("Pressed: " );
		}

		public void mouseEntered(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		public void mouseExited(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		public void mousePressed(MouseEvent e) {
			// TODO Auto-generated method stub
			 String val = value.toString();
	            JOptionPane.showInputDialog("GFDGD");
	            JOptionPane.showInputDialog ("Clicked: " + val);
	            stopCellEditing();
			
		}

		public void mouseReleased(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		public void addCellEditorListener(CellEditorListener arg0) {
			// TODO Auto-generated method stub
			
		}

		public void cancelCellEditing() {
			// TODO Auto-generated method stub
			
		}

		public boolean isCellEditable(EventObject arg0) {
			// TODO Auto-generated method stub
			return false;
		}

		public void removeCellEditorListener(CellEditorListener arg0) {
			// TODO Auto-generated method stub
			
		}

		public boolean shouldSelectCell(EventObject arg0) {
			// TODO Auto-generated method stub
			return false;
		}

		public boolean stopCellEditing() {
			// TODO Auto-generated method stub
			return false;
		}
    }

    public static class LayerCellRenderer extends JLabel  implements TreeCellRenderer
    {
    	private LayerPanel layerpanel;

        public LayerCellRenderer(String layerName){
        	//super(new BorderLayout());
            layerpanel=new LayerPanel(layerName);  
            layerpanel.nameLabel.addMouseListener(new MouseListener() {
				
				@Override
				public void mouseReleased(MouseEvent e) {
					// TODO Auto-generated method stub
					
				}
				
				@Override
				public void mousePressed(MouseEvent e) {
					 
					 JOptionPane.showInputDialog("GFDGD");
					 System.out.println("1111111111");
				}
				
				@Override
				public void mouseExited(MouseEvent e) {
					// TODO Auto-generated method stub
					
				}
				
				@Override
				public void mouseEntered(MouseEvent e) {
					// TODO Auto-generated method stub
					
				}
				
				@Override
				public void mouseClicked(MouseEvent e) {
					// TODO Auto-generated method stub
					
				}
			});
            //add(layerpanel ,BorderLayout.EAST);            
        }

        public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus){
        	//super.getTreeCellRendererComponent(tree, value, sel,expanded, leaf, row,hasFocus);
        	layerpanel.getNameLabel().setText(value.toString());// i think value is layerPanel object 
        	if (leaf)
        	{
        		JLabel label =new JLabel(layerpanel.getNameLabel().getText());        		 
        		label.setIcon(Utilities.loadResourceImageIcon("eye.png"));
        		return label;        	        
        	}
            return layerpanel;
        }
    }

}
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900