dmaillet
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007
5 juil. 2004 à 14:01
tiens regarde ca, j'ai un peu modifier l'exemple:
package explorateur;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.util.*;
public class CheckBoxTree {
public static void main(String[] arg) {
JFrame arboCheck = new FenetreTree();
arboCheck.setVisible(true);
}
}
class FenetreTree
extends JFrame {
FenetreTree() {
super("CBTree");
setSize(800, 600);
JTree arbo;
DefaultMutableTreeNode noeudParent;
DefaultMutableTreeNode noeudEnfant;
DefaultTreeCellRenderer dtcr = new DefaultTreeCellRenderer();
String[] tableau = {
"1", "2", "3", "4", "5"};
noeudParent = new DefaultMutableTreeNode("Datas");
JCheckBox jcb = null;
for (int i = 0; i < tableau.length; i++) {
jcb = new JCheckBox(tableau[i]);
jcb.setBackground(Color.white);
noeudEnfant = new DefaultMutableTreeNode(jcb, true);
noeudParent.add(noeudEnfant);
}
arbo = new JTree(noeudParent);
RenduComposant rc = new RenduComposant();
EditComposant ec = new EditComposant();
arbo.setCellRenderer(rc);
arbo.setCellEditor(ec);
arbo.setEditable(true);
getContentPane().add(new JScrollPane(arbo));
}
}
class RenduComposant
extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object obj,
boolean selected,
boolean expanded, boolean leaf,
int row, boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, obj, selected,
expanded, leaf, row,
hasFocus);
DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode) obj;
try{
return (JCheckBox) dmtcr.getUserObject();
}
catch(Exception e){
return this;
}
}
}
class EditComposant
implements TreeCellEditor {
public void addCellEditorListener(CellEditorListener l) {}
public void cancelCellEditing() {}
public Object getCellEditorValue() {
return this;
}
public boolean isCellEditable(EventObject evt) {
if (evt instanceof MouseEvent) {
MouseEvent mevt = (MouseEvent) evt;
if (mevt.getClickCount() == 1) {
return true;
}
}
return false;
}
public void removeCellEditorListener(CellEditorListener l) {}
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
public boolean stopCellEditing() {
return false;
}
public Component getTreeCellEditorComponent(JTree tree, Object obj,
boolean selected,
boolean expanded, boolean leaf,
int row) {
// super.getTreeCellEditorComponent(
// tree, obj, selected,
// expanded, leaf, row);
final JTree jtree = tree;
final DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode) obj;
try {
return (JCheckBox) dmtcr.getUserObject();
}
catch (Exception e) {
//un label avec une icon (mettre la bonne, car la methode ne retourne pas forcement la bonne)
JLabel label = new JLabel((String)dmtcr.getUserObject());
label.setIcon(((DefaultTreeCellRenderer)jtree.getCellRenderer()).getIcon());
return label;
//ou juste un label
// return new JLabel((String)dmtcr.getUserObject());
//ou alors si tu la veux editable:
// final JTextField textEditor = new JTextField(dmtcr.toString());
// textEditor.addActionListener(new ActionListener(){
// public void actionPerformed(ActionEvent ae){
// dmtcr.setUserObject(textEditor.getText());
// jtree.setSelectionPath(new TreePath(dmtcr.getFirstChild()));
// }
// });
// textEditor.addKeyListener(new KeyListener(){
// public void keyPressed(KeyEvent ke){
// if (ke.getKeyCode()==KeyEvent.VK_ENTER){
// dmtcr.setUserObject(textEditor.getText());
// jtree.setSelectionPath(new TreePath(dmtcr.getFirstChild()));
// }
// }
// public void keyReleased(KeyEvent ke){}
// public void keyTyped(KeyEvent ke){}
// });
// return textEditor;
}
}
}
-------------------
>:) dams >:)
-------------------