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

📄 synthtableui.java

📁 JAVA的一些源码 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)SynthTableUI.java	1.17 04/07/23 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.synth;import javax.swing.table.*;import javax.swing.*;import javax.swing.event.*;import java.util.Enumeration;import java.util.Hashtable;import java.util.TooManyListenersException;import java.awt.event.*;import java.awt.*;import java.awt.datatransfer.*;import java.awt.dnd.*;import java.text.*;import javax.swing.border.*;import javax.swing.plaf.*;import javax.swing.plaf.basic.*;import java.util.Date;import java.util.EventObject;import javax.swing.text.*;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import sun.swing.plaf.synth.SynthUI;/** * SynthTableUI implementation * * @version 1.17, 07/23/04 * @author Philip Milne */class SynthTableUI extends BasicTableUI implements SynthUI,        PropertyChangeListener {//// Instance Variables//    private SynthStyle style;    private boolean useTableColors;    private boolean useUIBorder;    // TableCellRenderer installed on the JTable at the time we're installed,    // cached so that we can reinstall them at uninstallUI time.    private TableCellRenderer dateRenderer;    private TableCellRenderer numberRenderer;    private TableCellRenderer doubleRender;    private TableCellRenderer floatRenderer;    private TableCellRenderer iconRenderer;    private TableCellRenderer imageIconRenderer;    private TableCellRenderer booleanRenderer;    private TableCellRenderer objectRenderer;////  The installation/uninstall procedures and support//    public static ComponentUI createUI(JComponent c) {        return new SynthTableUI();    }    /**     * Initialize JTable properties, e.g. font, foreground, and background.     * The font, foreground, and background properties are only set if their     * current value is either null or a UIResource, other properties are set     * if the current value is null.     *     * @see #installUI     */    protected void installDefaults() {        dateRenderer = installRendererIfPossible(Date.class, null);        numberRenderer = installRendererIfPossible(Number.class, null);        doubleRender = installRendererIfPossible(Double.class, null);        floatRenderer = installRendererIfPossible(Float.class, null);        iconRenderer = installRendererIfPossible(Icon.class, null);        imageIconRenderer = installRendererIfPossible(ImageIcon.class, null);        booleanRenderer = installRendererIfPossible(Boolean.class,                                 new SynthBooleanTableCellRenderer());        objectRenderer = installRendererIfPossible(Object.class,                                        new SynthTableCellRenderer());        updateStyle(table);    }    private TableCellRenderer installRendererIfPossible(Class objectClass,                                     TableCellRenderer renderer) {        TableCellRenderer currentRenderer = table.getDefaultRenderer(                                 objectClass);        if (currentRenderer instanceof UIResource) {            table.setDefaultRenderer(objectClass, renderer);        }        return currentRenderer;    }    private void updateStyle(JTable c) {        SynthContext context = getContext(c, ENABLED);        SynthStyle oldStyle = style;        style = SynthLookAndFeel.updateStyle(context, this);        if (style != oldStyle) {            context.setComponentState(ENABLED | SELECTED);            Color sbg = table.getSelectionBackground();            if (sbg == null || sbg instanceof UIResource) {                table.setSelectionBackground(style.getColor(                                        context, ColorType.TEXT_BACKGROUND));            }            Color sfg = table.getSelectionForeground();            if (sfg == null || sfg instanceof UIResource) {                table.setSelectionForeground(style.getColor(                                  context, ColorType.TEXT_FOREGROUND));            }            context.setComponentState(ENABLED);            Color gridColor = table.getGridColor();            if (gridColor == null || gridColor instanceof UIResource) {                gridColor = (Color)style.get(context, "Table.gridColor");                if (gridColor == null) {                    gridColor = style.getColor(context, ColorType.FOREGROUND);                }                table.setGridColor(gridColor);            }            useTableColors = style.getBoolean(context,                                  "Table.rendererUseTableColors", true);            useUIBorder = style.getBoolean(context,                                  "Table.rendererUseUIBorder", true);            Object rowHeight = style.get(context, "Table.rowHeight");            if (rowHeight != null) {                LookAndFeel.installProperty(table, "rowHeight", rowHeight);            }            if (oldStyle != null) {                uninstallKeyboardActions();                installKeyboardActions();            }        }        context.dispose();    }    /**     * Attaches listeners to the JTable.     */    protected void installListeners() {        super.installListeners();        table.addPropertyChangeListener(this);    }    protected void uninstallDefaults() {        table.setDefaultRenderer(Date.class, dateRenderer);        table.setDefaultRenderer(Number.class, numberRenderer);        table.setDefaultRenderer(Double.class, doubleRender);        table.setDefaultRenderer(Float.class, floatRenderer);        table.setDefaultRenderer(Icon.class, iconRenderer);        table.setDefaultRenderer(ImageIcon.class, imageIconRenderer);        table.setDefaultRenderer(Boolean.class, booleanRenderer);        table.setDefaultRenderer(Object.class, objectRenderer);	if (table.getTransferHandler() instanceof UIResource) {	    table.setTransferHandler(null);	}        SynthContext context = getContext(table, ENABLED);        style.uninstallDefaults(context);        context.dispose();        style = null;    }    protected void uninstallListeners() {        table.removePropertyChangeListener(this);        super.uninstallListeners();    }    //    // SynthUI    //    public SynthContext getContext(JComponent c) {        return getContext(c, getComponentState(c));    }    private SynthContext getContext(JComponent c, int state) {        return SynthContext.getContext(SynthContext.class, c,                    SynthLookAndFeel.getRegion(c), style, state);    }    private Region getRegion(JComponent c) {        return SynthLookAndFeel.getRegion(c);    }    private int getComponentState(JComponent c) {        return SynthLookAndFeel.getComponentState(c);    }////  Paint methods and support//    public void update(Graphics g, JComponent c) {        SynthContext context = getContext(c);        SynthLookAndFeel.update(context, g);        context.getPainter().paintTableBackground(context,                          g, 0, 0, c.getWidth(), c.getHeight());        paint(context, g);        context.dispose();    }    public void paintBorder(SynthContext context, Graphics g, int x,                            int y, int w, int h) {        context.getPainter().paintTableBorder(context, g, x, y, w, h);    }    public void paint(Graphics g, JComponent c) {        SynthContext context = getContext(c);        paint(context, g);        context.dispose();    }    protected void paint(SynthContext context, Graphics g) {	if (table.getRowCount() <= 0 || table.getColumnCount() <= 0) {	    return;	}	Rectangle clip = g.getClipBounds();	Point upperLeft = clip.getLocation();	Point lowerRight = new Point(clip.x + clip.width - 1, clip.y + clip.height - 1);        int rMin = table.rowAtPoint(upperLeft);        int rMax = table.rowAtPoint(lowerRight);        // This should never happen.        if (rMin == -1) {	    rMin = 0;        }        // If the table does not have enough rows to fill the view we'll get -1.        // Replace this with the index of the last row.        if (rMax == -1) {	    rMax = table.getRowCount()-1;        }        boolean ltr = table.getComponentOrientation().isLeftToRight();        int cMin = table.columnAtPoint(ltr ? upperLeft : lowerRight);         int cMax = table.columnAtPoint(ltr ? lowerRight : upperLeft);                // This should never happen.        if (cMin == -1) {	    cMin = 0;        }	// If the table does not have enough columns to fill the view we'll get -1.        // Replace this with the index of the last column.        if (cMax == -1) {	    cMax = table.getColumnCount()-1;        }        // Paint the grid.        paintGrid(context, g, rMin, rMax, cMin, cMax);        // Paint the cells.	paintCells(context, g, rMin, rMax, cMin, cMax);    }    /*     * Paints the grid lines within <I>aRect</I>, using the grid     * color set with <I>setGridColor</I>. Paints vertical lines     * if <code>getShowVerticalLines()</code> returns true and paints     * horizontal lines if <code>getShowHorizontalLines()</code>     * returns true.     */    private void paintGrid(SynthContext context, Graphics g, int rMin,                           int rMax, int cMin, int cMax) {        g.setColor(table.getGridColor());	Rectangle minCell = table.getCellRect(rMin, cMin, true);	Rectangle maxCell = table.getCellRect(rMax, cMax, true);        Rectangle damagedArea = minCell.union( maxCell );        SynthGraphicsUtils synthG = context.getStyle().getGraphicsUtils(                     context);        if (table.getShowHorizontalLines()) {	    int tableWidth = damagedArea.x + damagedArea.width;	    int y = damagedArea.y;	    for (int row = rMin; row <= rMax; row++) {		y += table.getRowHeight(row);                synthG.drawLine(context, "Table.grid",                                g, damagedArea.x, y - 1, tableWidth - 1,y - 1);	    }	}        if (table.getShowVerticalLines()) {	    TableColumnModel cm = table.getColumnModel();	    int tableHeight = damagedArea.y + damagedArea.height;	    int x;	    if (table.getComponentOrientation().isLeftToRight()) {		x = damagedArea.x;		for (int column = cMin; column <= cMax; column++) {		    int w = cm.getColumn(column).getWidth();		    x += w;

⌨️ 快捷键说明

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