⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infopanel.java

📁 主要为一个空间信息管理系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

    /**
     * Selection mode
     */
    public final static int DIG_IN_SELECTION = 4;

    /**
     * Super root type.
     */
    public final static int SUPER_ROOT = 0;

    /**
     * Check node type.
     */
    int type = 1;

    /**
     * Theme type.
     */
    int themeType = -1;

    /**
     * Selection Mode.
     */
    protected int selectionMode = SINGLE_SELECTION;

    /**
     * boolean select value.
     */
    protected boolean isSelected;

    /**
     * Create a new instance of selected.
     */
    public CheckNode()
    {
        this(null);
    }

    /**
     * Create a new instance of CheckNode.
     * @param userObject
     */
    public CheckNode(Object userObject)
    {
        this(userObject, true, false);
    }

    /**
     * Create a new instance of CheckNode.
     * @param userObject
     * @param allowsChildren
     * @param isSelected
     */
    public CheckNode(Object userObject, boolean allowsChildren
                     , boolean isSelected)
    {
        super(userObject, allowsChildren);
        this.isSelected = isSelected;
        //setSelectionMode(DIG_IN_SELECTION);
    }

    /**
     * Set Selection Mode.
     * @param mode
     */
    public void setSelectionMode(int mode)
    {
        selectionMode = mode;
    }

    /**
     * Node type, if the Type is SUPER_ROOT.
     * @param type
     */
    public void setNodeType(int type)
    {
        this.type = type;
    }

    /**
     * Get the Node Type for the CheckNode.
     * @return
     */
    public int getNodeType()
    {
        return type;
    }

    /**
     * ThemeType.
     * @param themetype
     */
    public void setThemeType(int themetype)
    {
        this.themeType = themetype;
    }

    /**
     * Get the themetype.
     * @return
     */
    public int getThemeType()
    {
        return this.themeType;
    }

    /**
     * Get the selection Mode.
     * @return
     */
    public int getSelectionMode()
    {
        return selectionMode;
    }

    /**
     * Set selected value.
     * @param isSelected
     */
    public void setSelected(boolean isSelected)
    {
        this.isSelected = isSelected;

        if ( (selectionMode == DIG_IN_SELECTION)
            && (children != null))
        {
            Enumeration enum = children.elements();
            while (enum.hasMoreElements())
            {
                CheckNode node = (CheckNode) enum.nextElement();
                node.setSelected(isSelected);
            }
        }
    }

    /**
     * boolean is selectec.
     * @return
     */
    public boolean isSelected()
    {
        return isSelected;
    }

    /**
     * Set the CheckNodeType.
     * @param type Check Node Type.
     */
    public void setType(int type)
    {
        this.type = type;
    }

    // If you want to change "isSelected" by CellEditor,
    public void setUserObject(Object obj)
    {
        if (obj instanceof Boolean)
        {
            setSelected( ( (Boolean) obj).booleanValue());
        }
        else
        {
            super.setUserObject(obj);
        }
    }
}

class CheckRenderer
    extends JPanel
    implements TreeCellRenderer
{
    /**
     * Check Box.
     */
    protected JCheckBox check;

    /**
     * Tree label.
     */
    protected TreeLabel label;

    /**
     * Check Node.
     */
    CheckNode node;

    /**
     * CheckRenderer.
     */
    public CheckRenderer()
    {
        setLayout(null);
        add(check = new JCheckBox());
        add(label = new TreeLabel());

        //System.out.println(UIManager.getColor("Tree.textBackground").toString());
        check.setBackground(UIManager.getColor("Tree.textBackground"));
    }

    /**
     * TreeCellRender.
     * @param tree Tree object.
     * @param value The Object for the tree leaf.
     * @param isSelected Is selected.
     * @param expanded Expanded.
     * @param leaf Boolean is a leaf.
     * @param row Row number.
     * @param hasFocus Has focused.
     * @return a Component.
     */
    public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                  boolean isSelected,
                                                  boolean expanded,
                                                  boolean leaf, int row,
                                                  boolean hasFocus)
    {
        String stringValue = tree.convertValueToText(value, isSelected,
            expanded, leaf, row, hasFocus);
        setEnabled(tree.isEnabled());

        node = (CheckNode) value;
        check.setSelected(node.isSelected());

        label.setFont(tree.getFont());
        label.setText(stringValue);
        label.setSelected(isSelected);
        label.setFocus(hasFocus);

        if (leaf)
        {
            label.setIcon(UIManager.getIcon("Tree.leafIcon"));
        }
        else if (expanded)
        {
            label.setIcon(UIManager.getIcon("Tree.openIcon"));
        }
        else
        {
            label.setIcon(UIManager.getIcon("Tree.closedIcon"));
        }

        return this;
    }

    /**
     * Get the PreferredSize value.
     * @return
     */
    public Dimension getPreferredSize()
    {
        Dimension d_check = check.getPreferredSize();
        Dimension d_label = label.getPreferredSize();
        return new Dimension(d_check.width + d_label.width,
                             (d_check.height < d_label.height ?
                              d_label.height : d_check.height));
    }

    /**
     * Layout the object.
     */
    public void doLayout()
    {
        Dimension d_check = check.getPreferredSize();
        Dimension d_label = label.getPreferredSize();
        int y_check = 0;
        int y_label = 0;
        if (d_check.height < d_label.height)
        {
            y_check = (d_label.height - d_check.height) / 2;
        }
        else
        {
            y_label = (d_check.height - d_label.height) / 2;
        }

        if (node.getNodeType() == node.SUPER_ROOT)
        {
            remove(check);
            //add(check = new JCheckBox());
            //add(label = new TreeLabel());
            label.setLocation(0, y_label);
            label.setBounds(0, y_label, d_label.width, d_label.height);
        }
        else
        {
            remove(check);
            add(check);
            check.setLocation(0, y_check);
            check.setBounds(0, y_check, d_check.width, d_check.height);
            label.setLocation(d_check.width, y_label);
            label.setBounds(d_check.width, y_label, d_label.width,
                            d_label.height);
        }
        //System.out.println("CheckRenderer --> doLayout method <" + label.getText() + ">");
    }

    /**
     * Set the background Color for the Tree.
     * @param color
     */
    public void setBackground(Color color)
    {
        if (color instanceof ColorUIResource)
        {
            color = null;
        }
        super.setBackground(color);
    }

    /**
     * Tree Label.
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author Shijun Deng
     * @version 2.0
     */
    class TreeLabel
        extends JLabel
    {
        /**
         * Is selected.
         */
        boolean isSelected;

        /**
         * has Focus.
         */
        boolean hasFocus;

        /**
         * Tree Label.
         */
        TreeLabel()
        {
            //this.setBackground(UIManager.getColor("Tree.textBackground"));
            //this.setForeground(UIManager.getColor("Tree.textForeground"));
        }

        /**
         * BackGround Color.
         * @param color Color value.
         */
        public void setBackground(Color color)
        {
            if (! (color instanceof ColorUIResource))
            {
                color = null;
            }
            super.setBackground(color);
        }

        /**
         * Paint Graphics.
         * @param g Graphics.
         */
        public void paint(Graphics g)
        {
            String str;
            if ( (str = getText()) != null)
            {
                if (0 < str.length())
                {
                    if (isSelected)
                    {
                        //if(UIManager.getLookAndFeel().is
                        g.setColor(UIManager.getColor("Tree.selectionBackground"));
                        setBackground(UIManager.getColor("Tree.selectionBackground"));
                        setForeground(UIManager.getColor("Tree.selectionForeground"));
                    }
                    else
                    {
                        g.setColor(UIManager.getColor("Tree.textBackground"));
                        setBackground(UIManager.getColor("Tree.textBackground"));
                        setForeground(UIManager.getColor("Tree.textForeground"));
                    }
                    //System.out.println(g.getColor());
                    Dimension d = getPreferredSize();
                    int imageOffset = 0;
                    Icon currentI = getIcon();
                    if (currentI != null)
                    {
                        imageOffset = currentI.getIconWidth() +
                            Math.max(0, getIconTextGap() - 1);
                    }
                    g.fillRect(imageOffset, 0, d.width - 1 - imageOffset,
                               d.height);

                    if (hasFocus)
                    {
                        Color old = g.getColor();
                        g.setColor(UIManager.getColor(
                            "Tree.selectionBorderColor"));
                        g.drawRect(imageOffset, 0, d.width - 1 - imageOffset,
                                   d.height - 1);
                        //g.setColor(old);

                        //g.setColor(UIManager.getColor("Tree.selectionForeground"));
                    }

                }
            }
            super.paint(g);

        }

        /**
         * PreferredSize.
         * @return
         */
        public Dimension getPreferredSize()
        {
            Dimension retDimension = super.getPreferredSize();
            if (retDimension != null)
            {
                retDimension =
                    new Dimension(retDimension.width + 3, retDimension.height);
            }
            return retDimension;
        }

        /**
         * Selected.
         * @param isSelected
         */
        void setSelected(boolean isSelected)
        {
            this.isSelected = isSelected;
        }

        /**
         * Set Focus.
         * @param hasFocus
         */
        void setFocus(boolean hasFocus)
        {
            this.hasFocus = hasFocus;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -