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

📄 jmcellrenderer.java

📁 梦界家园程序开发基底框架
💻 JAVA
字号:
package jm.framework.gui.module.render ;

import java.io.* ;

import java.awt.* ;
import javax.swing.* ;
import javax.swing.border.* ;
import javax.swing.table.* ;

import jm.util.* ;
public class JMCellRenderer
    extends JLabel implements TableCellRenderer , Serializable
{
    /**
	 *
	 */
	private static final long serialVersionUID = -7915874072169102928L;
	public static final String CLASS_NAME = "JLabel" ;
    Color[] backcolor = null ;
    protected static Border noFocusBorder = new EmptyBorder ( 1 , 1 , 1 , 1 ) ;

    // We need a place to store the color the JLabel should be returned
    // to after its foreground and background colors have been set
    // to the selection background color.
    // These ivars will be made protected when their names are finalized.
    private Color unselectedForeground ;
    private Color unselectedBackground ;
    //private boolean dsel = false ;

    /**
     * Creates a default table cell renderer.
     */
    public JMCellRenderer ( Color[] color )
    {
        super () ;
        backcolor = color ;
        setOpaque ( true ) ;
        setBorder ( noFocusBorder ) ;
    }

    /**
     * Overrides <code>JComponent.setForeground</code> to assign
     * the unselected-foreground color to the specified color.
     *
     * @param c set the foreground color to this value
     */
    public void setForeground ( Color c )
    {
        super.setForeground ( c ) ;
        unselectedForeground = c ;
    }

    /**
     * Overrides <code>JComponent.setBackground</code> to assign
     * the unselected-background color to the specified color.
     *
     * @param c set the background color to this value
     */
    public void setBackground ( Color c )
    {
        super.setBackground ( c ) ;
        unselectedBackground = c ;
    }

    /**
     * Notification from the <code>UIManager</code> that the look and feel
     * [L&F] has changed.
     * Replaces the current UI object with the latest version from the
     * <code>UIManager</code>.
     *
     * @see JComponent#updateUI
     */
    public void updateUI ()
    {
        super.updateUI () ;
        setForeground ( null ) ;
        setBackground ( null ) ;
    }

    // implements javax.swing.table.TableCellRenderer
    /**
     *
     * Returns the default table cell renderer.
     *
     * @param table  the <code>JTable</code>
     * @param value  the value to assign to the cell at
     *			<code>[row, column]</code>
     * @param isSelected true if cell is selected
     * @param hasFocus true if cell has focus
     * @param row  the row of the cell to render
     * @param column the column of the cell to render
     * @return the default table cell renderer
     */
    public Component getTableCellRendererComponent ( JTable table , Object value ,
        boolean isSelected , boolean hasFocus , int row , int column )
    {
        if ( backcolor != null && backcolor.length > 0 )
        {
            setBackground ( backcolor[ row % backcolor.length ] ) ;
        }

        if ( isSelected )
        {
            super.setForeground ( table.getSelectionForeground () ) ;
            super.setBackground ( table.getSelectionBackground () ) ;
        }
        else
        {
            super.setForeground ( ( unselectedForeground != null ) ? unselectedForeground
                                  : table.getForeground () ) ;
            super.setBackground ( ( unselectedBackground != null ) ? unselectedBackground
                                  : table.getBackground () ) ;
        }

        setFont ( table.getFont () ) ;

        if ( hasFocus )
        {
            setBorder ( UIManager.getBorder ( "Table.focusCellHighlightBorder" ) ) ;
            if ( !isSelected && table.isCellEditable ( row , column ) )
            {
                Color col ;
                col = UIManager.getColor ( "Table.focusCellForeground" ) ;
                if ( col != null )
                {
                    super.setForeground ( col ) ;
                }
                col = UIManager.getColor ( "Table.focusCellBackground" ) ;
                if ( col != null )
                {
                    super.setBackground ( col ) ;
                }
            }
        }
        else
        {
            setBorder ( noFocusBorder ) ;
        }

        setValue ( value ) ;

        return this ;
    }

    /*
     * The following methods are overridden as a performance measure to
     * to prune code-paths are often called in the case of renders
     * but which we know are unnecessary.  Great care should be taken
     * when writing your own renderer to weigh the benefits and
     * drawbacks of overriding methods like these.
     */

    /**
     * Overridden for performance reasons.
     * See the <a href="#override">Implementation Note</a>
     * for more information.
     */
    public boolean isOpaque ()
    {
        Color back = getBackground () ;
        Component p = getParent () ;
        if ( p != null )
        {
            p = p.getParent () ;
        }
        // p should now be the JTable.
        boolean colorMatch = ( back != null ) && ( p != null ) &&
            back.equals ( p.getBackground () ) &&
            p.isOpaque () ;
        return!colorMatch && super.isOpaque () ;
    }

    /**
     * Sets the <code>String</code> object for the cell being rendered to
     * <code>value</code>.
     *
     * @param value  the string value for this cell; if value is
     *		<code>null</code> it sets the text value to an empty string
     * @see JLabel#setText
     *
     */
    protected void setValue ( Object value )
    {
        setText ( ( value == null ) ? "" : ((JMVal)value).getStringValue() ) ;
    }

    //        /**
//         * A subclass of <code>DefaultTableCellRenderer</code> that
//         * implements <code>UIResource</code>.
//         * <code>DefaultTableCellRenderer</code> doesn't implement
//         * <code>UIResource</code>
//         * directly so that applications can safely override the
//         * <code>cellRenderer</code> property with
//         * <code>DefaultTableCellRenderer</code> subclasses.
//         * <p>
//         * <strong>Warning:</strong>
//         * Serialized objects of this class will not be compatible with
//         * future Swing releases. The current serialization support is
//         * appropriate for short term storage or RMI between applications running
//         * the same version of Swing.  As of 1.4, support for long term storage
//         * of all JavaBeans<sup><font size="-2">TM</font></sup>
//         * has been added to the <code>java.beans</code> package.
//         * Please see {@link java.beans.XMLEncoder}.
//         */
//        public static class UIResource extends DefaultTableCellRenderer
//            implements javax.swing.plaf.UIResource
//        {
//        }
//
}

⌨️ 快捷键说明

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