Module  java.desktop

Class BasicListUI

  • 已知直接子类:
    SynthListUI


    public class BasicListUI
    extends ListUI
    可扩展实现ListUI

    BasicListUI实例不能在多个列表之间共享。

    • 字段详细信息

      • rendererPane

        protected CellRendererPane rendererPane
        实例 CellRendererPane
      • focusListener

        protected FocusListener focusListener
        FocusListener附加到 JList
      • mouseInputListener

        protected MouseInputListener mouseInputListener
        MouseInputListener附加到 JList
      • listSelectionListener

        protected ListSelectionListener listSelectionListener
        ListSelectionListener ,附于 JList
      • listDataListener

        protected ListDataListener listDataListener
        ListDataListener附于 JList
      • propertyChangeListener

        protected PropertyChangeListener propertyChangeListener
        PropertyChangeListener ,附于 JList
      • cellHeights

        protected int[] cellHeights
        单元格的高度
      • cellHeight

        protected int cellHeight
        细胞的高度
      • cellWidth

        protected int cellWidth
        电池的宽度。
      • updateLayoutStateNeeded

        protected int updateLayoutStateNeeded
        该值代表 JList型号的更改。
      • modelChanged

        protected static final int modelChanged
        该位与模型更改属性有关。
        另请参见:
        Constant Field Values
      • selectionModelChanged

        protected static final int selectionModelChanged
        该位与选择模型更改属性有关。
        另请参见:
        Constant Field Values
      • fontChanged

        protected static final int fontChanged
        该位与字体更改属性有关。
        另请参见:
        Constant Field Values
      • fixedCellWidthChanged

        protected static final int fixedCellWidthChanged
        该位涉及固定单元宽度改变属性。
        另请参见:
        Constant Field Values
      • fixedCellHeightChanged

        protected static final int fixedCellHeightChanged
        这个位与固定单元格高度变化的属性有关。
        另请参见:
        Constant Field Values
      • prototypeCellValueChanged

        protected static final int prototypeCellValueChanged
        该位与原型单元格值更改属性有关。
        另请参见:
        Constant Field Values
      • cellRendererChanged

        protected static final int cellRendererChanged
        该位涉及到单元格渲染器更改的属性。
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • BasicListUI

        public BasicListUI​()
    • 方法详细信息

      • paintCell

        protected void paintCell​(Graphics g,
                                 int row,
                                 Rectangle rowBounds,
                                 ListCellRenderer<Object> cellRenderer,
                                 ListModel<Object> dataModel,
                                 ListSelectionModel selModel,
                                 int leadIndex)
        绘制一个列表单元格:计算相关状态,获取“橡皮图章”单元格渲染器组件,然后使用CellRendererPane进行绘制。 子类可能需要覆盖此方法而不是paint()
        参数
        g -实例 Graphics
        row - 一排
        rowBounds - 要渲染的边框矩形
        cellRenderer -列表 ListCellRenderer
        dataModel - 一个列表模型
        selModel - 选择模型
        leadIndex - 领先指数
        另请参见:
        paint(java.awt.Graphics, javax.swing.JComponent)
      • getPreferredSize

        public Dimension getPreferredSize​(JComponent c)
        列表的preferredSize取决于布局方向。 Describes the preferred size for each layout orientation Layout Orientation Preferred Size JList.VERTICAL The preferredSize of the list is total height of the rows and the maximum width of the cells. If JList.fixedCellHeight is specified then the total height of the rows is just (cellVerticalMargins + fixedCellHeight) * model.getSize() where rowVerticalMargins is the space we allocate for drawing the yellow focus outline. Similarly if fixedCellWidth is specified then we just use that. JList.VERTICAL_WRAP If the visible row count is greater than zero, the preferredHeight is the maximum cell height * visibleRowCount. If the visible row count is <= 0, the preferred height is either the current height of the list, or the maximum cell height, whichever is bigger. The preferred width is than the maximum cell width * number of columns needed. Where the number of columns needs is list.height / max cell height. Max cell height is either the fixed cell height, or is determined by iterating through all the cells to find the maximum height from the ListCellRenderer. JList.HORIZONTAL_WRAP If the visible row count is greater than zero, the preferredHeight is the maximum cell height * adjustedRowCount. Where visibleRowCount is used to determine the number of columns. Because this lays out horizontally the number of rows is then determined from the column count. For example, lets say you have a model with 10 items and the visible row count is 8. The number of columns needed to display this is 2, but you no longer need 8 rows to display this, you only need 5, thus the adjustedRowCount is 5.

        If the visible row count is <= 0, the preferred height is dictated by the number of columns, which will be as many as can fit in the width of the JList (width / max cell width), with at least one column. The preferred height then becomes the model size / number of columns * maximum cell height. Max cell height is either the fixed cell height, or is determined by iterating through all the cells to find the maximum height from the ListCellRenderer.

        以上指定原始首选宽度和高度。 所得到的首选宽度是上面的宽度+ insets.left + insets.right,所得到的首选高度是上面的高度+ insets.top + insets.bottom。 其中Insetslist.getInsets()确定。
        重写:
        getPreferredSizeComponentUI
        参数
        c - JList组件。
        结果
        列表的总大小。
        另请参见:
        JComponent.getPreferredSize()LayoutManager.preferredLayoutSize(java.awt.Container)
      • installKeyboardActions

        protected void installKeyboardActions​()
        注册JListBasicListUI相关联的键盘绑定。 这个方法在installUI()时调用。
        另请参见:
        installUI(javax.swing.JComponent)
      • uninstallKeyboardActions

        protected void uninstallKeyboardActions​()
        取消注册从installKeyboardActions安装的键盘操作。 此方法在uninstallUI()时调用 - 子类应确保在installUI时注册的所有键盘操作在此处被删除。
        另请参见:
        installUI(javax.swing.JComponent)
      • uninstallListeners

        protected void uninstallListeners​()
        从JList,其模型及其selectionModel中移除侦听器。 所有的监听器字段都将重置为null。 这个方法在uninstallUI()时调用,它应该与installListeners保持同步。
        另请参见:
        uninstallUI(javax.swing.JComponent)installListeners()
      • installDefaults

        protected void installDefaults​()
        初始化字体,前景和背景等列表属性,并添加CellRendererPane。 只有当当前值为null或UIResource时才会设置字体,前景和后台属性,如果当前值为空,则设置其他属性。
        另请参见:
        uninstallDefaults()installUI(javax.swing.JComponent)CellRendererPane
      • createUI

        public static ComponentUI createUI​(JComponent list)
        返回一个新的实例BasicListUI BasicListUI代表每JList分配一个。
        参数
        list - 一个组件
        结果
        一个新的 ListUI实现为Windows的外观和感觉。
      • locationToIndex

        public int locationToIndex​(JList<?> list,
                                   Point location)
        返回最接近列表坐标系中给定位置的指定的JList中的单元JList 要确定单元格实际是否包含指定的位置,请按照getCellBounds的规定将该点与单元格的边界进行getCellBounds 如果列表的模型为空,此方法返回-1
        Specified by:
        locationToIndexListUI
        参数
        list - 列表
        location - 点的坐标
        结果
        最靠近给定位置的单元 -1 ,或 -1
        异常
        NullPointerException - 如果 location为空
      • indexToLocation

        public Point indexToLocation​(JList<?> list,
                                     int index)
        返回列表坐标系中给定的JList中指定项目的原点。 如果索引无效,则返回null
        Specified by:
        indexToLocation ListUI
        参数
        list - 列表
        index - 细胞指数
        结果
        细胞的起源,或 null
      • getCellBounds

        public Rectangle getCellBounds​(JList<?> list,
                                       int index1,
                                       int index2)
        返回给定列表的坐标系中由两个索引指定的单元格范围的边界矩形。 指数可以按任何顺序提供。

        如果较小的索引在列表的单元格范围之外,则此方法返回null 如果较小的索引有效,但较大的索引在列表的范围之外,则仅返回第一个索引的边界。 否则返回有效范围的范围。

        Specified by:
        getCellBoundsListUI
        参数
        list - 列表
        index1 - 范围内的第一个索引
        index2 - 范围内的第二个索引
        结果
        单元格范围的边界矩形,或 null
      • convertYToRow

        protected int convertYToRow​(int y0)
        根据当前的布局,将JList相对坐标转换为包含它的行。 如果y0不属于任何行,返回-1。
        参数
        y0 - 相对Y坐标
        结果
        包含y0或-1的行
        另请参见:
        getRowHeight(int)updateLayoutState()
      • convertRowToY

        protected int convertRowToY​(int row)
        返回指定行的原点的 JList相对Y坐标,如果行无效则返回-1。
        参数
        row - 一排
        结果
        行的原点的Y坐标,或-1
        另请参见:
        getRowHeight(int)updateLayoutState()
      • maybeUpdateLayoutState

        protected void maybeUpdateLayoutState​()
        如果updateLayoutStateNeeded不为零,请调用updateLayoutState()并重置updateLayoutStateNeeded。 在根据列表的几何进行任何计算之前,应该通过方法调用此方法。 例如,它是paint()和getPreferredSize()中的第一个调用。
        另请参见:
        updateLayoutState()
      • updateLayoutState

        protected void updateLayoutState​()
        根据当前字体和fixedCellWidth,fixedCellHeight和prototypeCellValue的当前值重新计算cellHeight或cellHeights和cellWidth的值。
        另请参见:
        maybeUpdateLayoutState()
      • createMouseInputListener

        protected MouseInputListener createMouseInputListener​()
        创建一个实现MouseInputListener的委托。 代表被添加到java.awt.Component听众列表中,时间为installUI() 子类可以覆盖此方法以返回自定义的MouseInputListener ,例如
          class MyListUI extends BasicListUI {
            protected MouseInputListener createMouseInputListener() {
                return new MyMouseInputHandler();
            }
            public class MyMouseInputHandler extends MouseInputHandler {
                public void mouseMoved(MouseEvent e) {
                    // do some extra work when the mouse moves
                    super.mouseMoved(e);
                }
            }
         } 
        结果
        一个 MouseInputListener
        另请参见:
        BasicListUI.MouseInputHandlerinstallUI(javax.swing.JComponent)
      • createFocusListener

        protected FocusListener createFocusListener​()
        返回一个 FocusListener的实例。
        结果
        一个 FocusListener
      • createListSelectionListener

        protected ListSelectionListener createListSelectionListener​()
        创建一个ListSelectionHandler的实例,通过selectionModel根据需要添加到JLists 子类可以覆盖此方法以返回自定义的ListSelectionListener ,例如
          class MyListUI extends BasicListUI {
            protected ListSelectionListener createListSelectionListener() {
                return new MySelectionListener();
            }
            public class MySelectionListener extends ListSelectionHandler {
                public void valueChanged(ListSelectionEvent e) {
                    // do some extra work when the selection changes
                    super.valueChange(e);
                }
            }
         } 
        结果
        一个 ListSelectionHandler
        另请参见:
        BasicListUI.ListSelectionHandlerinstallUI(javax.swing.JComponent)
      • createListDataListener

        protected ListDataListener createListDataListener​()
        创建一个ListDataListener的实例,根据需要添加到JLists 子类可以覆盖此方法以返回自定义的ListDataListener ,例如
          class MyListUI extends BasicListUI {
            protected ListDataListener createListDataListener() {
                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);
                }
            }
         } 
        结果
        一个 ListDataListener
        另请参见:
        ListDataListenerJList.getModel()installUI(javax.swing.JComponent)
      • createPropertyChangeListener

        protected PropertyChangeListener createPropertyChangeListener​()
        创建一个PropertyChangeHandler的实例,被添加到JListinstallUI() 子类可以覆盖此方法以返回自定义的PropertyChangeListener ,例如
          class MyListUI extends BasicListUI {
            protected PropertyChangeListener createPropertyChangeListener() {
                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);
                }
            }
         } 
        结果
        一个 PropertyChangeHandler
        另请参见:
        PropertyChangeListenerinstallUI(javax.swing.JComponent)