- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.ListUI
-
- javax.swing.plaf.basic.BasicListUI
-
- 已知直接子类:
-
SynthListUI
public class BasicListUI extends ListUI
可扩展实现ListUI
。BasicListUI
实例不能在多个列表之间共享。
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 class
BasicListUI.FocusHandler
这个类应该被视为一个“受保护”的内部类。class
BasicListUI.ListDataHandler
该ListDataListener
被添加到JLists
型号在installUI time
,并且每当JList.model属性更改。class
BasicListUI.ListSelectionHandler
在installUI时添加到JLists选择模型的ListSelectionListener,以及JList.selectionModel属性更改时。class
BasicListUI.MouseInputHandler
鼠标输入和JList的焦点处理。class
BasicListUI.PropertyChangeHandler
在InstallUI时添加到JList的PropertyChangeListener。
-
Field Summary
Fields Modifier and Type Field 描述 protected int
cellHeight
细胞的高度protected int[]
cellHeights
单元格的高度protected static int
cellRendererChanged
该位涉及到单元格渲染器更改的属性。protected int
cellWidth
电池的宽度。protected static int
fixedCellHeightChanged
这个位与固定单元格高度变化的属性有关。protected static int
fixedCellWidthChanged
该位涉及固定单元宽度改变属性。protected FocusListener
focusListener
FocusListener
附加到JList
。protected static int
fontChanged
该位与字体更改属性有关。protected JList<Object>
list
实例JList
。protected ListDataListener
listDataListener
ListDataListener
附于JList
。protected ListSelectionListener
listSelectionListener
ListSelectionListener
,附于JList
。protected static int
modelChanged
该位与模型更改属性有关。protected MouseInputListener
mouseInputListener
MouseInputListener
附于JList
。protected PropertyChangeListener
propertyChangeListener
PropertyChangeListener
,附于JList
。protected static int
prototypeCellValueChanged
该位与原型单元格值更改属性有关。protected CellRendererPane
rendererPane
实例CellRendererPane
。protected static int
selectionModelChanged
该位与选择模型更改属性有关。protected int
updateLayoutStateNeeded
该值代表JList
型号的更改。
-
构造方法摘要
构造方法 Constructor 描述 BasicListUI()
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected int
convertRowToY(int row)
返回指定行的原点的JList
相对Y坐标,如果行无效返回-1。protected int
convertYToRow(int y0)
基于当前布局,将JList
相对坐标转换为包含该坐标的行。protected FocusListener
createFocusListener()
返回一个FocusListener
的实例。protected ListDataListener
createListDataListener()
创建一个ListDataListener
的实例,根据需要添加到JLists
。protected ListSelectionListener
createListSelectionListener()
创建一个ListSelectionHandler
的实例,通过selectionModel根据需要添加到JLists
。protected MouseInputListener
createMouseInputListener()
创建一个实现MouseInputListener
。protected PropertyChangeListener
createPropertyChangeListener()
创建一个PropertyChangeHandler
的实例,它被添加到JList
由installUI()
。static ComponentUI
createUI(JComponent list)
返回一个新的实例BasicListUI
。int
getBaseline(JComponent c, int width, int height)
返回基线。Component.BaselineResizeBehavior
getBaselineResizeBehavior(JComponent c)
返回一个枚举,指示组件的基线如何随着大小的变化而改变。Rectangle
getCellBounds(JList<?> list, int index1, int index2)
返回给定列表的坐标系中由两个索引指定的单元格范围的边界矩形。Dimension
getPreferredSize(JComponent c)
列表的preferredSize取决于布局方向。protected int
getRowHeight(int row)
根据当前布局返回指定行的高度。Point
indexToLocation(JList<?> list, int index)
返回列表坐标系中给定的JList
中指定项目的原点。protected void
installDefaults()
初始化字体,前景和背景等列表属性,并添加CellRendererPane。protected void
installKeyboardActions()
注册在键盘绑定JList
,该BasicListUI
相关联。protected void
installListeners()
创建并安装JList,其模型及其selectionModel的侦听器。void
installUI(JComponent c)
初始化this.list
致电installDefaults()
,installListeners()
,并installKeyboardActions()
秩序。int
locationToIndex(JList<?> list, Point location)
返回最接近列表坐标系中给定位置的指定的JList
中的单元JList
。protected void
maybeUpdateLayoutState()
如果updateLayoutStateNeeded不为零,请调用updateLayoutState()并重置updateLayoutStateNeeded。void
paint(Graphics g, JComponent c)
绘制与Graphics对象clipRect相交的行。protected void
paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer<Object> cellRenderer, ListModel<Object> dataModel, ListSelectionModel selModel, int leadIndex)
绘制一个列表单元格:计算相关状态,获取“橡皮图章”单元格渲染器组件,然后使用CellRendererPane
进行绘制。protected void
selectNextIndex()
选择上一行并强制它可见。protected void
selectPreviousIndex()
选择上一行并强制它可见。protected void
uninstallDefaults()
将未明确覆盖的列表属性设置为null
。protected void
uninstallKeyboardActions()
取消注册从installKeyboardActions
安装的键盘操作。protected void
uninstallListeners()
从JList,其模型及其selectionModel中移除侦听器。void
uninstallUI(JComponent c)
取消初始化this.list
致电uninstallListeners()
,uninstallKeyboardActions()
,并uninstallDefaults()
秩序。protected void
updateLayoutState()
根据当前字体和fixedCellWidth,fixedCellHeight和prototypeCellValue的当前值重新计算cellHeight或cellHeights和cellWidth的值。-
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, update
-
-
-
-
字段详细信息
-
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
-
-
方法详细信息
-
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)
-
paint
public void paint(Graphics g, JComponent c)
绘制与Graphics对象clipRect相交的行。 该方法根据需要调用paintCell。 子类可能需要覆盖这些方法。- 重写:
-
paint
在ComponentUI
- 参数
-
g
- 要绘画的Graphics
上下文 -
c
- 被绘的部件 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用 - 另请参见:
-
paintCell(java.awt.Graphics, int, java.awt.Rectangle, javax.swing.ListCellRenderer<java.lang.Object>, javax.swing.ListModel<java.lang.Object>, javax.swing.ListSelectionModel, int)
-
getBaseline
public int getBaseline(JComponent c, int width, int height)
返回基线。- 重写:
-
getBaseline
在ComponentUI
- 参数
-
c
-JComponent
正在请求基准 -
width
- 获取基准的宽度 -
height
- 获取基准的高度 - 结果
- 基线或值<0表示没有合理的基线
- 异常
-
NullPointerException
- 如果c
是null
-
IllegalArgumentException
- 如果宽度或高度<0 - 从以下版本开始:
- 1.6
- 另请参见:
-
JComponent.getBaseline(int, int)
-
getBaselineResizeBehavior
public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
返回一个枚举,指示组件的基线如何随着大小的变化而改变。- 重写:
-
getBaselineResizeBehavior
在ComponentUI
- 参数
-
c
-JComponent
以返回基准调整大小的行为 - 结果
- 一个枚举,指示基准随着组件大小的变化而改变
- 异常
-
NullPointerException
- 如果c
是null
- 从以下版本开始:
- 1.6
- 另请参见:
-
JComponent.getBaseline(int, int)
-
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
由list.getInsets()
确定。- 重写:
-
getPreferredSize
在ComponentUI
- 参数
-
c
- JList组件。 - 结果
- 列表的总大小。
- 另请参见:
-
JComponent.getPreferredSize()
,LayoutManager.preferredLayoutSize(java.awt.Container)
-
selectPreviousIndex
protected void selectPreviousIndex()
选择上一行并强制它可见。
-
selectNextIndex
protected void selectNextIndex()
选择上一行并强制它可见。
-
installKeyboardActions
protected void installKeyboardActions()
注册JList
与BasicListUI
相关联的键盘绑定。 这个方法在installUI()时调用。
-
uninstallKeyboardActions
protected void uninstallKeyboardActions()
取消注册从installKeyboardActions
安装的键盘操作。 此方法在uninstallUI()时调用 - 子类应确保在installUI时注册的所有键盘操作在此处被删除。
-
installListeners
protected void installListeners()
创建并安装JList,其模型及其selectionModel的侦听器。 这个方法在installUI()时调用。
-
uninstallListeners
protected void uninstallListeners()
从JList,其模型及其selectionModel中移除侦听器。 所有的监听器字段都将重置为null。 这个方法在uninstallUI()时调用,它应该与installListeners保持同步。
-
installDefaults
protected void installDefaults()
初始化字体,前景和背景等列表属性,并添加CellRendererPane。 只有当当前值为null或UIResource时才会设置字体,前景和后台属性,如果当前值为空,则设置其他属性。
-
uninstallDefaults
protected void uninstallDefaults()
将未明确覆盖的列表属性设置为null
。 如果某个属性的当前值不是UIResource
则该属性被视为被覆盖。
-
installUI
public void installUI(JComponent c)
初始化this.list
致电installDefaults()
,installListeners()
,并installKeyboardActions()
秩序。- 重写:
-
installUI
在ComponentUI
- 参数
-
c
- 正在安装此UIc
的组件 - 另请参见:
-
installDefaults()
,installListeners()
,installKeyboardActions()
-
uninstallUI
public void uninstallUI(JComponent c)
取消初始化this.list
致电uninstallListeners()
,uninstallKeyboardActions()
,并uninstallDefaults()
秩序。 将this.list设置为null。- 重写:
-
uninstallUI
在ComponentUI
- 参数
-
c
-c
。 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用 - 另请参见:
-
uninstallListeners()
,uninstallKeyboardActions()
,uninstallDefaults()
-
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:
-
locationToIndex
在ListUI
- 参数
-
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:
-
getCellBounds
在ListUI
- 参数
-
list
- 列表 -
index1
- 范围内的第一个索引 -
index2
- 范围内的第二个索引 - 结果
-
单元格范围的边界矩形,或
null
-
getRowHeight
protected int getRowHeight(int row)
根据当前布局返回指定行的高度。- 参数
-
row
- 一排 - 结果
- 指定行高度,如果行无效则为-1
- 另请参见:
-
convertYToRow(int)
,convertRowToY(int)
,updateLayoutState()
-
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.MouseInputHandler
,installUI(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.ListSelectionHandler
,installUI(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
- 另请参见:
-
ListDataListener
,JList.getModel()
,installUI(javax.swing.JComponent)
-
createPropertyChangeListener
protected PropertyChangeListener createPropertyChangeListener()
创建一个PropertyChangeHandler
的实例,被添加到JList
由installUI()
。 子类可以覆盖此方法以返回自定义的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
- 另请参见:
-
PropertyChangeListener
,installUI(javax.swing.JComponent)
-
-