改Tree绘制器吧,具体代码可以看核心技术II

解决方案 »

  1.   

    SEE ALSO: j2sdk 里的DEMO/JFC/SWINGSET(OR SO)
      

  2.   

    如下示例是对renderer的改动,editor的改动类似,不过记得checkbox改变选择后的值的返回。import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import javax.swing.plaf.basic.*;
    import javax.swing.text.*;
    public class TestFrame_1 extends JFrame{
        JDialog dialog = new JDialog();
        ButtonGroup bg = new ButtonGroup();
        /** Creates a new instance of TestFrame */
        public TestFrame_1() {
            Container c = getContentPane();
            JTree tree = new JTree();
            tree.setCellRenderer(new MyCellRenderer());
            c.add(tree, "Center");
            addWindowListener(new WindowAdapter()
            {
                public void windowClosing(WindowEvent evt)
                {
                    System.exit(0);
                }
            });
        }
        
        class MyCellRenderer extends JCheckBox implements TreeCellRenderer
        {
            public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                setText(value.toString());
                return this;
            }
            
        }
        
        public static void main(String[] args)
        {
            JFrame f = new TestFrame_1();
            f.setSize(640, 480);
            f.show();
        }
        
    }