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

📄 basiclistui.java

📁 JAVA的一些源码 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    protected void maybeUpdateLayoutState()    {        if (updateLayoutStateNeeded != 0) {            updateLayoutState();            updateLayoutStateNeeded = 0;        }    }    /**     * Recompute the value of cellHeight or cellHeights based     * and cellWidth, based on the current font and the current     * values of fixedCellWidth, fixedCellHeight, and prototypeCellValue.     *     * @see #maybeUpdateLayoutState     */    protected void updateLayoutState()    {        /* If both JList fixedCellWidth and fixedCellHeight have been         * set, then initialize cellWidth and cellHeight, and set         * cellHeights to null.         */        int fixedCellHeight = list.getFixedCellHeight();        int fixedCellWidth = list.getFixedCellWidth();        cellWidth = (fixedCellWidth != -1) ? fixedCellWidth : -1;        if (fixedCellHeight != -1) {            cellHeight = fixedCellHeight;            cellHeights = null;        }        else {            cellHeight = -1;            cellHeights = new int[list.getModel().getSize()];        }        /* If either of  JList fixedCellWidth and fixedCellHeight haven't         * been set, then initialize cellWidth and cellHeights by         * scanning through the entire model.  Note: if the renderer is         * null, we just set cellWidth and cellHeights[*] to zero,         * if they're not set already.         */        if ((fixedCellWidth == -1) || (fixedCellHeight == -1)) {            ListModel dataModel = list.getModel();            int dataModelSize = dataModel.getSize();            ListCellRenderer renderer = list.getCellRenderer();            if (renderer != null) {                for(int index = 0; index < dataModelSize; index++) {                    Object value = dataModel.getElementAt(index);                    Component c = renderer.getListCellRendererComponent(list, value, index, false, false);                    rendererPane.add(c);                    Dimension cellSize = c.getPreferredSize();                    if (fixedCellWidth == -1) {                        cellWidth = Math.max(cellSize.width, cellWidth);                    }                    if (fixedCellHeight == -1) {                        cellHeights[index] = cellSize.height;                    }                }            }            else {                if (cellWidth == -1) {                    cellWidth = 0;                }                if (cellHeights == null) {                    cellHeights = new int[dataModelSize];                }                for(int index = 0; index < dataModelSize; index++) {                    cellHeights[index] = 0;                }            }        }        columnCount = 1;        if (layoutOrientation != JList.VERTICAL) {            updateHorizontalLayoutState(fixedCellWidth, fixedCellHeight);        }    }    /**     * Invoked when the list is layed out horizontally to determine how     * many columns to create.     * <p>     * This updates the <code>rowsPerColumn, </code><code>columnCount</code>,     * <code>preferredHeight</code> and potentially <code>cellHeight</code>     * instance variables.     */    private void updateHorizontalLayoutState(int fixedCellWidth,                                             int fixedCellHeight) {        int visRows = list.getVisibleRowCount();        int dataModelSize = list.getModel().getSize();        Insets insets = list.getInsets();        listHeight = list.getHeight();        listWidth = list.getWidth();        if (dataModelSize == 0) {            rowsPerColumn = columnCount = 0;            preferredHeight = insets.top + insets.bottom;            return;        }        int height;        if (fixedCellHeight != -1) {            height = fixedCellHeight;        }        else {            // Determine the max of the renderer heights.            int maxHeight = 0;            if (cellHeights.length > 0) {                maxHeight = cellHeights[cellHeights.length - 1];                for (int counter = cellHeights.length - 2;                     counter >= 0; counter--) {                    maxHeight = Math.max(maxHeight, cellHeights[counter]);                }            }            height = cellHeight = maxHeight;            cellHeights = null;        }        // The number of rows is either determined by the visible row        // count, or by the height of the list.        rowsPerColumn = dataModelSize;        if (visRows > 0) {            rowsPerColumn = visRows;            columnCount = Math.max(1, dataModelSize / rowsPerColumn);            if (dataModelSize > 0 && dataModelSize > rowsPerColumn &&                dataModelSize % rowsPerColumn != 0) {                columnCount++;            }            if (layoutOrientation == JList.HORIZONTAL_WRAP) {                // Because HORIZONTAL_WRAP flows differently, the                 // rowsPerColumn needs to be adjusted.                rowsPerColumn = (dataModelSize / columnCount);                if (dataModelSize % columnCount > 0) {                    rowsPerColumn++;                }            }        }        else if (layoutOrientation == JList.VERTICAL_WRAP && height != 0) {            rowsPerColumn = Math.max(1, (listHeight - insets.top -                                         insets.bottom) / height);            columnCount = Math.max(1, dataModelSize / rowsPerColumn);            if (dataModelSize > 0 && dataModelSize > rowsPerColumn &&                dataModelSize % rowsPerColumn != 0) {                columnCount++;            }        }        else if (layoutOrientation == JList.HORIZONTAL_WRAP && cellWidth > 0 &&                 listWidth > 0) {            columnCount = Math.max(1, (listWidth - insets.left -                                       insets.right) / cellWidth);            rowsPerColumn = dataModelSize / columnCount;            if (dataModelSize % columnCount > 0) {                rowsPerColumn++;            }        }        preferredHeight = rowsPerColumn * cellHeight + insets.top +                              insets.bottom;    }    private Handler getHandler() {        if (handler == null) {            handler = DRAG_FIX ? new DragFixHandler() : new Handler();        }        return handler;    }    /**     * Mouse input, and focus handling for JList.  An instance of this     * class is added to the appropriate java.awt.Component lists     * at installUI() time.  Note keyboard input is handled with JComponent     * KeyboardActions, see installKeyboardActions().     * <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}.     *     * @see #createMouseInputListener     * @see #installKeyboardActions     * @see #installUI     */    public class MouseInputHandler implements MouseInputListener    {        public void mouseClicked(MouseEvent e) {            getHandler().mouseClicked(e);        }        public void mouseEntered(MouseEvent e) {            getHandler().mouseEntered(e);        }        public void mouseExited(MouseEvent e) {            getHandler().mouseExited(e);        }        public void mousePressed(MouseEvent e) {            getHandler().mousePressed(e);	}        public void mouseDragged(MouseEvent e) {            getHandler().mouseDragged(e);        }        public void mouseMoved(MouseEvent e) {            getHandler().mouseMoved(e);        }        public void mouseReleased(MouseEvent e) {            getHandler().mouseReleased(e);        }    }    /**     * Creates a delegate that implements MouseInputListener.     * The delegate is added to the corresponding java.awt.Component listener      * lists at installUI() time. Subclasses can override this method to return      * a custom MouseInputListener, e.g.     * <pre>     * class MyListUI extends BasicListUI {     *    protected MouseInputListener <b>createMouseInputListener</b>() {     *        return new MyMouseInputHandler();     *    }     *    public class MyMouseInputHandler extends MouseInputHandler {     *        public void mouseMoved(MouseEvent e) {     *            // do some extra work when the mouse moves     *            super.mouseMoved(e);     *        }     *    }     * }     * </pre>     *     * @see MouseInputHandler     * @see #installUI     */    protected MouseInputListener createMouseInputListener() {        return getHandler();    }    /**     * This inner class is marked &quot;public&quot; due to a compiler bug.     * This class should be treated as a &quot;protected&quot; inner class.     * Instantiate it only within subclasses of BasicTableUI.     */    public class FocusHandler implements FocusListener    {        protected void repaintCellFocus()        {            getHandler().repaintCellFocus();        }        /* The focusGained() focusLost() methods run when the JList         * focus changes.         */        public void focusGained(FocusEvent e) {            getHandler().focusGained(e);        }        public void focusLost(FocusEvent e) {            getHandler().focusLost(e);        }    }    protected FocusListener createFocusListener() {        return getHandler();    }    /**     * The ListSelectionListener that's added to the JLists selection     * model at installUI time, and whenever the JList.selectionModel property     * changes.  When the selection changes we repaint the affected rows.     * <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}.     *     * @see #createListSelectionListener     * @see #getCellBounds     * @see #installUI     */    public class ListSelectionHandler implements ListSelectionListener    {        public void valueChanged(ListSelectionEvent e)        {            getHandler().valueChanged(e);        }    }    /**     * Creates an instance of ListSelectionHandler that's added to     * the JLists by selectionModel as needed.  Subclasses can override     * this method to return a custom ListSelectionListener, e.g.     * <pre>     * class MyListUI extends BasicListUI {     *    protected ListSelectionListener <b>createListSelectionListener</b>() {     *        return new MySelectionListener();     *    }     *    public class MySelectionListener extends ListSelectionHandler {     *        public void valueChanged(ListSelectionEvent e) {     *            // do some extra work when the selection changes     *            super.valueChange(e);     *        }     *    }     * }     * </pre>     *     * @see ListSelectionHandler     * @see #installUI     */    protected ListSelectionListener createListSelectionListener() {        return getHandler();    }    private void redrawList() {	list.revalidate();	list.repaint();    }    /**     * The ListDataListener that's added to the JLists model at     * installUI time, and whenever the JList.model property changes.     * <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}.     *     * @see JList#getModel     * @see #maybeUpdateLayoutState     * @see #createListDataListener     * @see #installUI     */    public class ListDataHandler implements ListDataListener    {        public void intervalAdded(ListDataEvent e) {            getHandler().intervalAdded(e);        }        public void intervalRemoved(ListDataEvent e)        {            getHandler().intervalRemoved(e);        }

⌨️ 快捷键说明

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