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

📄 basiclistui.java

📁 JAVA的一些源码 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        public void contentsChanged(ListDataEvent e) {            getHandler().contentsChanged(e);        }    }    /**     * Creates an instance of ListDataListener that's added to     * the JLists by model as needed.  Subclasses can override     * this method to return a custom ListDataListener, e.g.     * <pre>     * class MyListUI extends BasicListUI {     *    protected ListDataListener <b>createListDataListener</b>() {     *        return new MyListDataListener();     *    }     *    public class MyListDataListener extends ListDataHandler {     *        public void contentsChanged(ListDataEvent e) {     *            // do some extra work when the models contents change     *            super.contentsChange(e);     *        }     *    }     * }     * </pre>     *     * @see ListDataListener     * @see JList#getModel     * @see #installUI     */    protected ListDataListener createListDataListener() {        return getHandler();    }    /**     * The PropertyChangeListener that's added to the JList at     * installUI time.  When the value of a JList property that     * affects layout changes, we set a bit in updateLayoutStateNeeded.     * If the JLists model changes we additionally remove our listeners     * from the old model.  Likewise for the JList selectionModel.     * <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 #maybeUpdateLayoutState     * @see #createPropertyChangeListener     * @see #installUI     */    public class PropertyChangeHandler implements PropertyChangeListener    {        public void propertyChange(PropertyChangeEvent e)        {            getHandler().propertyChange(e);        }    }    /**     * Creates an instance of PropertyChangeHandler that's added to     * the JList by installUI().  Subclasses can override this method     * to return a custom PropertyChangeListener, e.g.     * <pre>     * class MyListUI extends BasicListUI {     *    protected PropertyChangeListener <b>createPropertyChangeListener</b>() {     *        return new MyPropertyChangeListener();     *    }     *    public class MyPropertyChangeListener extends PropertyChangeHandler {     *        public void propertyChange(PropertyChangeEvent e) {     *            if (e.getPropertyName().equals("model")) {     *                // do some extra work when the model changes     *            }     *            super.propertyChange(e);     *        }     *    }     * }     * </pre>     *     * @see PropertyChangeListener     * @see #installUI     */    protected PropertyChangeListener createPropertyChangeListener() {        return getHandler();    }    /** Used by IncrementLeadSelectionAction. Indicates the action should     * change the lead, and not select it. */    private static final int CHANGE_LEAD = 0;    /** Used by IncrementLeadSelectionAction. Indicates the action should     * change the selection and lead. */    private static final int CHANGE_SELECTION = 1;    /** Used by IncrementLeadSelectionAction. Indicates the action should     * extend the selection from the anchor to the next index. */    private static final int EXTEND_SELECTION = 2;    private static class Actions extends UIAction {        private static final String SELECT_PREVIOUS_COLUMN =                                    "selectPreviousColumn";        private static final String SELECT_PREVIOUS_COLUMN_EXTEND =                                    "selectPreviousColumnExtendSelection";        private static final String SELECT_PREVIOUS_COLUMN_CHANGE_LEAD =                                    "selectPreviousColumnChangeLead";        private static final String SELECT_NEXT_COLUMN = "selectNextColumn";        private static final String SELECT_NEXT_COLUMN_EXTEND =                                    "selectNextColumnExtendSelection";        private static final String SELECT_NEXT_COLUMN_CHANGE_LEAD =                                    "selectNextColumnChangeLead";        private static final String SELECT_PREVIOUS_ROW = "selectPreviousRow";        private static final String SELECT_PREVIOUS_ROW_EXTEND =                                     "selectPreviousRowExtendSelection";        private static final String SELECT_PREVIOUS_ROW_CHANGE_LEAD =                                     "selectPreviousRowChangeLead";        private static final String SELECT_NEXT_ROW = "selectNextRow";        private static final String SELECT_NEXT_ROW_EXTEND =                                     "selectNextRowExtendSelection";        private static final String SELECT_NEXT_ROW_CHANGE_LEAD =                                     "selectNextRowChangeLead";        private static final String SELECT_FIRST_ROW = "selectFirstRow";        private static final String SELECT_FIRST_ROW_EXTEND =                                     "selectFirstRowExtendSelection";        private static final String SELECT_FIRST_ROW_CHANGE_LEAD =                                     "selectFirstRowChangeLead";        private static final String SELECT_LAST_ROW = "selectLastRow";        private static final String SELECT_LAST_ROW_EXTEND =                                     "selectLastRowExtendSelection";        private static final String SELECT_LAST_ROW_CHANGE_LEAD =                                     "selectLastRowChangeLead";        private static final String SCROLL_UP = "scrollUp";        private static final String SCROLL_UP_EXTEND =                                     "scrollUpExtendSelection";        private static final String SCROLL_UP_CHANGE_LEAD =                                     "scrollUpChangeLead";        private static final String SCROLL_DOWN = "scrollDown";        private static final String SCROLL_DOWN_EXTEND =                                     "scrollDownExtendSelection";        private static final String SCROLL_DOWN_CHANGE_LEAD =                                     "scrollDownChangeLead";        private static final String SELECT_ALL = "selectAll";        private static final String CLEAR_SELECTION = "clearSelection";        // add the lead item to the selection without changing lead or anchor        private static final String ADD_TO_SELECTION = "addToSelection";        // toggle the selected state of the lead item and move the anchor to it        private static final String TOGGLE_AND_ANCHOR = "toggleAndAnchor";        // extend the selection to the lead item        private static final String EXTEND_TO = "extendTo";        // move the anchor to the lead and ensure only that item is selected        private static final String MOVE_SELECTION_TO = "moveSelectionTo";        Actions(String name) {            super(name);        }        public void actionPerformed(ActionEvent e) {            String name = getName();            JList list = (JList)e.getSource();            BasicListUI ui = (BasicListUI)BasicLookAndFeel.getUIOfType(                     list.getUI(), BasicListUI.class);            if (name == SELECT_PREVIOUS_COLUMN) {                changeSelection(list, CHANGE_SELECTION,                                getNextColumnIndex(list, ui, -1), true);            }            else if (name == SELECT_PREVIOUS_COLUMN_EXTEND) {                changeSelection(list, EXTEND_SELECTION,                                getNextColumnIndex(list, ui, -1), true);            }            else if (name == SELECT_PREVIOUS_COLUMN_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD,                                getNextColumnIndex(list, ui, -1), true);            }            else if (name == SELECT_NEXT_COLUMN) {                changeSelection(list, CHANGE_SELECTION,                                getNextColumnIndex(list, ui, 1), true);            }            else if (name == SELECT_NEXT_COLUMN_EXTEND) {                changeSelection(list, EXTEND_SELECTION,                                getNextColumnIndex(list, ui, 1), true);            }            else if (name == SELECT_NEXT_COLUMN_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD,                                getNextColumnIndex(list, ui, 1), true);            }            else if (name == SELECT_PREVIOUS_ROW) {                changeSelection(list, CHANGE_SELECTION,                                getNextIndex(list, ui, -1), true);            }            else if (name == SELECT_PREVIOUS_ROW_EXTEND) {                changeSelection(list, EXTEND_SELECTION,                                getNextIndex(list, ui, -1), true);            }            else if (name == SELECT_PREVIOUS_ROW_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD,                                getNextIndex(list, ui, -1), true);            }            else if (name == SELECT_NEXT_ROW) {                changeSelection(list, CHANGE_SELECTION,                                getNextIndex(list, ui, 1), true);            }            else if (name == SELECT_NEXT_ROW_EXTEND) {                changeSelection(list, EXTEND_SELECTION,                                getNextIndex(list, ui, 1), true);            }            else if (name == SELECT_NEXT_ROW_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD,                                getNextIndex(list, ui, 1), true);            }            else if (name == SELECT_FIRST_ROW) {                changeSelection(list, CHANGE_SELECTION, 0, true);            }            else if (name == SELECT_FIRST_ROW_EXTEND) {                changeSelection(list, EXTEND_SELECTION, 0, true);            }            else if (name == SELECT_FIRST_ROW_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD, 0, true);            }            else if (name == SELECT_LAST_ROW) {                changeSelection(list, CHANGE_SELECTION,                                list.getModel().getSize() - 1, true);            }            else if (name == SELECT_LAST_ROW_EXTEND) {                changeSelection(list, EXTEND_SELECTION,                                list.getModel().getSize() - 1, true);            }            else if (name == SELECT_LAST_ROW_CHANGE_LEAD) {                changeSelection(list, CHANGE_LEAD,                                list.getModel().getSize() - 1, true);            }            else if (name == SCROLL_UP) {                scroll(list, CHANGE_SELECTION, true);            }            else if (name == SCROLL_UP_EXTEND) {                scroll(list, EXTEND_SELECTION, true);            }            else if (name == SCROLL_UP_CHANGE_LEAD) {                scroll(list, CHANGE_LEAD, true);            }            else if (name == SCROLL_DOWN) {                scroll(list, CHANGE_SELECTION, false);            }            else if (name == SCROLL_DOWN_EXTEND) {                scroll(list, EXTEND_SELECTION, false);            }            else if (name == SCROLL_DOWN_CHANGE_LEAD) {                scroll(list, CHANGE_LEAD, false);            }            else if (name == SELECT_ALL) {                selectAll(list);            }            else if (name == CLEAR_SELECTION) {                clearSelection(list);            }            else if (name == ADD_TO_SELECTION) {                int index = list.getSelectionModel().getLeadSelectionIndex();                if (!list.isSelectedIndex(index)) {                    int oldAnchor = list.getSelectionModel().getAnchorSelectionIndex();                    list.setValueIsAdjusting(true);                    list.addSelectionInterval(index, index);                    list.getSelectionModel().setAnchorSelectionIndex(oldAnchor);                    list.setValueIsAdjusting(false);                }            }            else if (name == TOGGLE_AND_ANCHOR) {                int index = list.getSelectionModel().getLeadSelectionIndex();                if (list.isSelectedIndex(index)) {                    list.removeSelectionInterval(index, index);                } else {                    list.addSelectionInterval(index, index);                }            }            else if (name == EXTEND_TO) {                changeSelection(list, EXTEND_SELECTION,                                list.getSelectionModel().getLeadSelectionIndex(),                                false);            }            else if (name == MOVE_SELECTION_TO) {                changeSelection(list, CHANGE_SELECTION,                                list.getSelectionModel().getLeadSelectionIndex(),                                false);            }        }        public boolean isEnabled(Object c) {            Object name = getName();            if (name == SELECT_PREVIOUS_COLUMN_CHANGE_LEAD ||                    name == SELECT_NEXT_COLUMN_CHANGE_LEAD ||                    name == SELECT_PREVIOUS_ROW_CHANGE_LEAD ||                    name == SELECT_NEXT_ROW_CHANGE_LEAD ||                    name == SELECT_FIRST_ROW_CHANGE_LEAD ||                    name == SELECT_LAST_ROW_CHANGE_LEAD ||                    name == SCROLL_UP_CHANGE_LEAD ||                    name == SCROLL_DOWN_CHANGE_LEAD) {                // discontinuous selection actions are only enabled for                // DefaultListSelectionModel                return c != null && ((JList)c).getSelectionModel()                                        instanceof DefaultListSelectionModel;            }            return true;        }        private void clearSelection(JList list) {	    list.clearSelection();        }        private void selectAll(JList list) {            int size = list.getModel().getSize();            if (size > 0) {                ListSelectionModel lsm = list.getSelectionModel();                if (lsm.getSelectionMode() == ListSelectionModel.SINGLE_SELECTION) {                    int leadIndex = list.getLeadSelectionIndex();                    if (leadIndex != -1) {                        list.setSelectionInterval(leadIndex, leadIndex);                    } else if (list.getMinSelectionIndex() == -1) {                        list.setSelectionInterval(0, 0);                        list.ensureIndexIsVisible(0);                    }                } else {                    list.setValueIsAdjusting(true);                    int anchor = lsm.getAnchorSelectionIndex();                    int lead = lsm.getLeadSelectionIndex();                    list.setSelectionInterval(0, size - 1);                    // this is called simply to restore the anchor and lead                    list.addSelectionInterval(anchor, lead);                    list.setValueIsAdjusting(false);                }            }        }        private void scroll(JList list, int type,                            boolean up) {            int index = getNextPageIndex(list, up);            if (index != -1) {                changeSelection(list, type, index, false);                // down                Rectangle visRect = list.getVisibleRect();                Rectangle cellBounds = list.getCellBounds(index, index);                if (!up) {                    cellBounds.y = Math.max(0, cellBounds.y +                                            cellBounds.height -visRect.height);                    cellBounds.height = visRect.height;                }                else {                    cellBounds.height = visRect.height;                }                list.scrollRectToVisible(cellBounds);            }        }	private int getNextPageIndex(JList list, boolean up) {            if (up) {  

⌨️ 快捷键说明

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