模块  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
        该位与模型更改属性有关。
        另请参见:
        常数字段值
      • selectionModelChanged

        protected static final int selectionModelChanged
        该位与选择模型更改的属性有关。
        另请参见:
        常数字段值
      • fontChanged

        protected static final int fontChanged
        该位与字体更改属性有关。
        另请参见:
        常数字段值
      • fixedCellWidthChanged

        protected static final int fixedCellWidthChanged
        该位涉及固定单元宽度变化的属性。
        另请参见:
        常数字段值
      • fixedCellHeightChanged

        protected static final int fixedCellHeightChanged
        该位涉及固定单元高度变化的属性。
        另请参见:
        常数字段值
      • prototypeCellValueChanged

        protected static final int prototypeCellValueChanged
        该位涉及原型单元值更改的属性。
        另请参见:
        常数字段值
      • cellRendererChanged

        protected static final int cellRendererChanged
        该位与单元格渲染器更改属性有关。
        另请参见:
        常数字段值
    • 构造方法详细信息

      • 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。 Insets的确定来自list.getInsets()
        重写:
        getPreferredSizeComponentUI
        参数
        c - JList组件。
        结果
        列表的总大小。
        另请参见:
        JComponent.getPreferredSize()LayoutManager.preferredLayoutSize(java.awt.Container)
      • installKeyboardActions

        protected void installKeyboardActions()
        在与JList关联的BasicListUI上注册键盘绑定。 在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时才设置它们,如果当前值为null,则设置其他属性。
        另请参见:
        uninstallDefaults()installUI(javax.swing.JComponent)CellRendererPane
      • uninstallUI

        public void uninstallUI​(JComponent c)
        取消初始化this.list拨打uninstallListeners()uninstallKeyboardActions()uninstallDefaults()秩序。 将this.list设置为null。
        重写:
        uninstallUI类, ComponentUI
        参数
        c - 要从中删除此UI委托的组件; 此参数通常被忽略,但如果UI对象是无状态的并且由多个组件共享,则可以使用此参数
        另请参见:
        uninstallListeners()uninstallKeyboardActions()uninstallDefaults()
      • createUI

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

        public int locationToIndex​(JList<?> list,
                                   Point location)
        返回最接近列表坐标系中给定位置的指定JList中的单元JList 要确定单元格是否实际包含指定位置,请将该点与单元格的边界进行比较,如getCellBounds 如果列表的模型为空,则此方法返回-1
        Specified by:
        locationToIndexListUI
        参数
        list - 该清单
        location - 该点的坐标
        结果
        最接近给定位置的单元 -1 ,或 -1
        异常
        NullPointerException - 如果 location为空
      • 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的委托。 该代表将在installUI()时添加到相应的java.awt.Component侦听器列表中。 子类可以覆盖此方法以返回自定义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()
        根据需要JLists由selectionModel添加到JListsListSelectionHandler的实例。 子类可以重写此方法以返回自定义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)