- 类型参数:
-
E
- 此列表元素的类型
- 所有实现的接口:
-
ImageObserver
,MenuContainer
,Serializable
,Accessible
,Scrollable
ListModel
维护列表的内容。
使用JList
构造函数很容易显示数组或对象的Vector,该构造函数会自动为您构建一个只读的ListModel
实例:
// 创建一个显示数组中字符串的JList
String[] data = {"one", "two", "three", "four"};
JList<String> myList = new JList<String>(data);
// 创建一个显示JList.class的超类的JList,通过
// 使用填充此数据的Vector创建它
Vector<Class<?>> superClasses = new Vector<Class<?>>();
Class<JList> rootClass = javax.swing.JList.class;
for(Class<?> cls = rootClass; cls != null; cls = cls.getSuperclass()) {
superClasses.addElement(cls);
}
JList<Class<?>> myList = new JList<Class<?>>(superClasses);
// 自动创建的模型存储在JList的“model”属性中,您可以检索
ListModel<Class<?>> model = myList.getModel();
for(int i = 0; i < model.getSize(); i++) {
System.out.println(model.getElementAt(i));
}
ListModel
可以直接通过构造函数或setModel
方法提供给JList
。内容不需要是静态的 - 项目的数量和值可以随时间改变。正确的ListModel
实现在每次发生更改时通知已添加到其中的一组javax.swing.event.ListDataListener
。这些更改由javax.swing.event.ListDataEvent
标识,该事件标识已修改、添加或删除的列表索引范围。JList
的ListUI
负责通过监听模型来保持视觉表示与更改同步。
简单的动态内容JList
应用程序可以使用DefaultListModel
类来维护列表元素。该类实现了ListModel
接口,并提供了类似于java.util.Vector
的API。需要更自定义的ListModel
实现的应用程序可能希望子类化AbstractListModel
,该类提供了基本支持来管理和通知侦听器。例如,AbstractListModel
的只读实现:
// 此列表模型有大约2^16个元素。享受滚动吧。
ListModel<String> bigData = new AbstractListModel<String>() {
public int getSize() { return Short.MAX_VALUE; }
public String getElementAt(int index) { return "Index " + index; }
};
JList
的选择状态由另一个单独的模型管理,即ListSelectionModel
的实例。JList
在构造时使用选择模型进行初始化,并且还包含查询或设置此选择模型的方法。此外,JList
提供了方便的方法来轻松管理选择。这些方法,如setSelectedIndex
和getSelectedValue
,是负责处理与选择模型交互的细节的封装方法。默认情况下,JList
的选择模型配置为允许同时选择任意组合的项目;选择模式MULTIPLE_INTERVAL_SELECTION
。选择模式可以直接在选择模型上更改,或通过JList
的封装方法更改。负责根据用户手势更新选择模型的责任属于列表的ListUI
。
正确的ListSelectionModel
实现在每次选择更改时通知已添加到其中的一组javax.swing.event.ListSelectionListener
。这些更改由javax.swing.event.ListSelectionEvent
标识,该事件标识了选择更改的范围。
监听列表选择更改以保持列表的视觉表示更新的首选方法是直接向JList
添加ListSelectionListener
。JList
然后负责监听选择模型并通知您的侦听器更改。
负责监听选择更改以保持列表的视觉表示更新的责任属于列表的ListUI
。
JList
中单元格的绘制由称为单元格渲染器的委托处理,安装在列表上作为cellRenderer
属性。渲染器提供一个java.awt.Component
,类似于“橡皮图章”,用于绘制单元格。每次需要绘制单元格时,列表的ListUI
会向单元格渲染器请求组件,将其放置到适当位置,并通过其paint
方法绘制单元格的内容。默认的单元格渲染器使用JLabel
组件进行渲染,由列表的ListUI
安装。您可以使用以下代码替换自己的渲染器:
// 为列表中的每个对象显示图标和字符串。
class MyCellRenderer extends JLabel implements ListCellRenderer<Object> {
static final ImageIcon longIcon = new ImageIcon("long.gif");
static final ImageIcon shortIcon = new ImageIcon("short.gif");
// 这是ListCellRenderer定义的唯一方法。
// 每次调用时我们都重新配置JLabel。
public Component getListCellRendererComponent(
JList<?> list, // 列表
Object value, // 要显示的值
int index, // 单元索引
boolean isSelected, // 单元是否被选中
boolean cellHasFocus) // 单元是否具有焦点
{
String s = value.toString();
setText(s);
setIcon((s.length() > 10) ? longIcon : shortIcon);
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(list.isEnabled());
setFont(list.getFont());
setOpaque(true);
return this;
}
}
myList.setCellRenderer(new MyCellRenderer());
单元格渲染器的另一个作用是帮助确定列表的大小信息。默认情况下,列表的ListUI
通过询问单元格渲染器每个列表项的首选大小来确定单元格的大小。对于大量项目的大列表,这可能很昂贵。为了避免这些计算,您可以在列表上设置fixedCellWidth
和fixedCellHeight
,或者根据单个原型值自动计算这些值:
JList<String> bigDataList = new JList<String>(bigData);
// 我们不希望JList实现计算所有列表单元格的宽度
// 或高度,因此我们给它一个我们将需要的任何单元格大小的字符串
// 它使用此字符串来计算fixedCellWidth和fixedCellHeight属性的值。
bigDataList.setPrototypeCellValue("Index 1234567890");
JList
不直接实现滚动。要创建一个可滚动的列表,请将其设置为JScrollPane
的视口视图。例如:
JScrollPane scrollPane = new JScrollPane(myList); // 或分两步: JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(myList);
JList
不提供任何特殊处理双击或三击(或N次点击)鼠标的功能,但如果希望对这些事件采取操作,则可以轻松添加MouseListener
。使用locationToIndex
方法确定单击了哪个单元格。例如:
MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { int index = list.locationToIndex(e.getPoint()); System.out.println("双击了项目 " + index); } } }; list.addMouseListener(mouseListener);
警告: Swing不是线程安全的。有关更多信息,请参阅Swing的线程策略。
警告: 此类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于在运行相同版本的Swing的应用程序之间进行短期存储或RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans
包中。请参阅XMLEncoder
。
有关更多文档,请参阅如何使用列表在The Java Tutorial。
- 自版本:
- 1.2
- 参见:
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
此类为JList
类实现了辅助功能支持。static final class
代表JList
的拖放位置的TransferHandler.DropLocation
的子类。Nested classes/interfaces declared in class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
表示“报纸风格”布局,单元格水平流动然后垂直流动。static final int
表示单元格的垂直布局,单列中的单元格;默认布局。static final int
表示“报纸风格”布局,单元格垂直流动然后水平流动。Fields declared in class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
向列表添加一个监听器,以便在选择发生更改时通知;这是监听选择状态更改的首选方式。void
addSelectionInterval
(int anchor, int lead) 将选择设置为指定区间与当前选择的并集。void
清除选择;调用此方法后,isSelectionEmpty
将返回true
。protected ListSelectionModel
返回一个DefaultListSelectionModel
的实例;在构造期间调用以初始化列表的选择模型属性。void
ensureIndexIsVisible
(int index) 滚动列表以使指定单元格完全可见。protected void
fireSelectionValueChanged
(int firstIndex, int lastIndex, boolean isAdjusting) 通知直接添加到列表的ListSelectionListener
有关选择模型所做的选择更改。获取与此JList
关联的AccessibleContext
。int
返回锚定选择索引。getCellBounds
(int index0, int index1) 返回由两个索引指定的单元格范围在列表坐标系中的边界矩形。ListCellRenderer
<? super E> 返回负责绘制列表项的对象。boolean
返回是否启用自动拖动处理。final JList.DropLocation
返回组件在DnD操作期间应在其中明确指示为放置位置的位置,或者如果当前不应显示任何位置,则返回null
。final DropMode
返回此组件的放置模式。int
返回当前可见的最小列表索引。int
返回fixedCellHeight
属性的值。int
返回fixedCellWidth
属性的值。int
返回当前可见的最大列表索引。int
返回列表的布局方向属性:VERTICAL
表示单列单元格布局,VERTICAL_WRAP
表示内容垂直流动然后水平流动的“报纸风格”布局,HORIZONTAL_WRAP
表示内容水平流动然后垂直流动的“报纸风格”布局。int
返回主选择索引。返回通过addListSelectionListener
方式添加到此JList
的所有ListSelectionListener
的数组。int
返回最大选定单元格索引,如果选择为空则返回-1
。int
返回最小选定单元格索引,如果选择为空则返回-1
。getModel()
返回保存JList
组件显示的项目列表的数据模型。int
getNextMatch
(String prefix, int startIndex, Position.Bias bias) 返回下一个列表元素,其toString
值以给定前缀开头。计算显示visibleRowCount
行所需的视口大小。返回“原型”单元格值 -- 用于计算单元格的固定宽度和高度的值。int
getScrollableBlockIncrement
(Rectangle visibleRect, int orientation, int direction) 返回滚动以显示下一个或上一个块的距离。boolean
如果此JList
显示在JViewport
中且视口高度大于列表的首选高度,或者布局方向为VERTICAL_WRAP
且visibleRowCount <= 0
,则返回true
;否则返回false
。boolean
如果此JList
显示在JViewport
中且视口宽度大于列表的首选宽度,或者布局方向为HORIZONTAL_WRAP
且visibleRowCount <= 0
,则返回true
;否则返回false
。int
getScrollableUnitIncrement
(Rectangle visibleRect, int orientation, int direction) 返回滚动以显示下一个或上一个行(用于垂直滚动)或列(用于水平滚动)的距离。int
返回最小选定单元格索引;当列表中仅选择一个项目时返回该选择。int[]
返回所有选定索引的数组,按递增顺序排列。返回最小选定单元格索引的值;当列表中仅选择一个项目时返回所选值。Object[]
已弃用。返回所有选定项目的列表,根据它们在列表中的索引按递增顺序排列。返回用于绘制选定项目背景的颜色。返回用于绘制选定项目前景的颜色。int
返回列表的当前选择模式。返回当前选择模型。getToolTipText
(MouseEvent event) 返回给定事件使用的工具提示文本。getUI()
返回渲染此组件的外观对象ListUI
。返回"ListUI"
,用于查找定义此组件外观的javax.swing.plaf.ListUI
类名称的UIDefaults
键。boolean
返回选择模型的isAdjusting
属性的值。int
返回visibleRowCount
属性的值。indexToLocation
(int index) 返回列表坐标系中指定项目的原点。boolean
isSelectedIndex
(int index) 如果指定索引已选中,则返回true
,否则返回false
。boolean
如果没有选中任何内容,则返回true
,否则返回false
。int
locationToIndex
(Point location) 返回列表坐标系中最接近给定位置的单元格索引。protected String
返回此JList
的String
表示形式。void
从列表中删除选择监听器。void
removeSelectionInterval
(int index0, int index1) 将选择设置为指定区间与当前选择的差集。void
setCellRenderer
(ListCellRenderer<? super E> cellRenderer) 设置用于绘制列表中每个单元格的委托。void
setDragEnabled
(boolean b) 打开或关闭自动拖动处理。final void
setDropMode
(DropMode dropMode) 设置此组件的放置模式。void
setFixedCellHeight
(int height) 设置用于列表中每个单元格高度的固定值。void
setFixedCellWidth
(int width) 设置用于列表中每个单元格宽度的固定值。void
setLayoutOrientation
(int layoutOrientation) 定义列表单元格的布局方式。void
setListData
(E[] listData) 从项目数组构造只读ListModel
,并使用此模型调用setModel
。void
setListData
(Vector<? extends E> listData) 从Vector
构造只读ListModel
,并使用此模型调用setModel
。void
设置表示列表内容或“值”的模型,通知属性更改侦听器,然后清除列表的选择。void
setPrototypeCellValue
(E prototypeCellValue) 设置prototypeCellValue
属性,然后(如果新值为非空
),通过从单元格渲染器请求给定值(和索引0)的单元格渲染器组件,并使用该组件的首选大小来计算fixedCellWidth
和fixedCellHeight
属性。void
setSelectedIndex
(int index) 选择单个单元格。void
setSelectedIndices
(int[] indices) 将选择更改为由给定数组指定的索引集。void
setSelectedValue
(Object anObject, boolean shouldScroll) 从列表中选择指定对象。void
setSelectionBackground
(Color selectionBackground) 设置用于绘制选定项目背景的颜色,单元格渲染器可以使用填充选定单元格。void
setSelectionForeground
(Color selectionForeground) 设置用于绘制选定项目前景的颜色,单元格渲染器可以用于呈现文本和图形。void
setSelectionInterval
(int anchor, int lead) 选择指定的区间。void
setSelectionMode
(int selectionMode) 设置列表的选择模式。void
setSelectionModel
(ListSelectionModel selectionModel) 将列表的selectionModel
设置为非null
的ListSelectionModel
实现。void
设置渲染此组件的外观对象ListUI
。void
setValueIsAdjusting
(boolean b) 设置选择模型的valueIsAdjusting
属性。void
setVisibleRowCount
(int visibleRowCount) 设置visibleRowCount
属性,具体含义取决于布局方向:对于VERTICAL
布局方向,这将设置显示的行数而无需滚动;对于其他方向,它会影响单元格的换行。void
updateUI()
通过将其设置为当前外观提供的值重置ListUI
属性。Methods declared in class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Methods declared in class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Methods declared in class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
VERTICAL
public static final int VERTICAL表示单列中单元格的垂直布局;默认布局。- 自:
- 1.4
- 参见:
-
VERTICAL_WRAP
public static final int VERTICAL_WRAP表示“报纸风格”布局,单元格垂直流动然后水平流动。- 自:
- 1.4
- 参见:
-
HORIZONTAL_WRAP
public static final int HORIZONTAL_WRAP表示“报纸风格”布局,单元格水平流动然后垂直流动。- 自:
- 1.4
- 参见:
-
-
Constructor Details
-
JList
构造一个显示指定模型中元素的JList
,该模型为非空
。所有JList
构造函数都委托给此构造函数。此构造函数将列表注册到
ToolTipManager
,允许单元格渲染器提供工具提示。- 参数:
-
dataModel
- 列表的模型 - 抛出:
-
IllegalArgumentException
- 如果模型为null
-
JList
构造一个显示指定数组中元素的JList
。此构造函数为给定数组创建一个只读模型,然后委托给接受ListModel
的构造函数。尝试将
null
值传递给此方法会导致未定义的行为,很可能会引发异常。创建的模型直接引用给定的数组。在构建列表后尝试修改数组会导致未定义的行为。- 参数:
-
listData
- 要加载到数据模型中的对象数组,非null
-
JList
构造一个显示指定Vector
中元素的JList
。此构造函数为给定Vector
创建一个只读模型,然后委托给接受ListModel
的构造函数。尝试将
null
值传递给此方法会导致未定义的行为,很可能会引发异常。创建的模型直接引用给定的Vector
。在构建列表后尝试修改Vector
会导致未定义的行为。- 参数:
-
listData
- 要加载到数据模型中的Vector
,非null
-
JList
public JList()构造一个带有空的只读模型的JList
。
-
-
Method Details
-
getUI
返回ListUI
,用于渲染此组件的外观对象。- 覆盖:
-
getUI
在类JComponent
- 返回:
-
渲染此组件的
ListUI
对象
-
setUI
@BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(ListUI ui) 设置ListUI
,用于渲染此组件的外观对象。- 参数:
-
ui
-ListUI
对象 - 参见:
-
updateUI
public void updateUI()通过将其设置为当前外观提供的值重置ListUI
属性。如果当前的单元格渲染器是由开发人员安装的(而不是外观本身),这还会导致单元格渲染器及其子级被更新,通过在其上调用SwingUtilities.updateComponentTreeUI
。- 覆盖:
-
updateUI
在类JComponent
- 参见:
-
getUIClassID
返回"ListUI"
,用于查找定义此组件外观的javax.swing.plaf.ListUI
类名称的UIDefaults
键。- 覆盖:
-
getUIClassID
在类JComponent
- 返回:
- 字符串"ListUI"
- 参见:
-
getPrototypeCellValue
返回“原型”单元格值,用于计算单元格的固定宽度和高度。如果没有这样的值,则可以为null
。- 返回:
-
prototypeCellValue
属性的值 - 参见:
-
setPrototypeCellValue
@BeanProperty(visualUpdate=true, description="The cell prototype value, used to compute cell width and height.") public void setPrototypeCellValue(E prototypeCellValue) 设置prototypeCellValue
属性,然后(如果新值为非null
),通过从单元格渲染器组件(索引为0)请求给定值的单元格渲染器组件,并使用该组件的首选大小来计算fixedCellWidth
和fixedCellHeight
属性。当此方法可能修改
prototypeCellValue
、fixedCellHeight
和fixedCellWidth
三个属性时,只有在prototypeCellValue
属性更改时才会发送PropertyChangeEvent
通知。要查看设置此属性的示例,请参阅上面的类描述。
此属性的默认值为
null
。这是一个JavaBeans绑定属性。
- 参数:
-
prototypeCellValue
- 用于基于fixedCellWidth
和fixedCellHeight
的值 - 参见:
-
getFixedCellWidth
public int getFixedCellWidth()返回fixedCellWidth
属性的值。- 返回:
- 固定单元格宽度
- 参见:
-
setFixedCellWidth
@BeanProperty(visualUpdate=true, description="Defines a fixed cell width when greater than zero.") public void setFixedCellWidth(int width) 设置用于列表中每个单元格宽度的固定值。如果width
为-1,则在ListUI
中通过将getPreferredSize
应用于每个列表元素的单元格渲染器组件来计算单元格宽度。此属性的默认值为
-1
。这是一个JavaBeans绑定属性。
- 参数:
-
width
- 列表中所有单元格使用的宽度 - 参见:
-
getFixedCellHeight
public int getFixedCellHeight()返回fixedCellHeight
属性的值。- 返回:
- 固定单元格高度
- 参见:
-
setFixedCellHeight
@BeanProperty(visualUpdate=true, description="Defines a fixed cell height when greater than zero.") public void setFixedCellHeight(int height) 设置用于列表中每个单元格高度的固定值。如果height
为-1,则在ListUI
中通过将getPreferredSize
应用于每个列表元素的单元格渲染器组件来计算单元格高度。此属性的默认值为
-1
。这是一个JavaBeans绑定属性。
- 参数:
-
height
- 列表中所有单元格使用的高度 - 参见:
-
getCellRenderer
返回负责绘制列表项的对象。- 返回:
-
cellRenderer
属性的值 - 参见:
-
setCellRenderer
@BeanProperty(visualUpdate=true, description="The component used to draw the cells.") public void setCellRenderer(ListCellRenderer<? super E> cellRenderer) 设置用于绘制列表中每个单元格的委托。单元格渲染器的工作在类级别文档中有详细讨论。如果
prototypeCellValue
属性为非null
,设置单元格渲染器还会导致重新计算fixedCellWidth
和fixedCellHeight
属性。但是,只生成一个PropertyChangeEvent
- 用于cellRenderer
属性。此属性的默认值由
ListUI
委托提供,即由外观实现提供。这是一个JavaBeans绑定属性。
- 参数:
-
cellRenderer
- 用于绘制列表单元格的ListCellRenderer
- 参见:
-
getSelectionForeground
返回用于绘制选定项前景的颜色。DefaultListCellRenderer
使用此颜色来绘制处于选定状态的项目的前景,大多数ListUI
实现安装的渲染器也是如此。- 返回:
- 用于绘制选定项前景的颜色
- 参见:
-
setSelectionForeground
@BeanProperty(visualUpdate=true, description="The foreground color of selected cells.") public void setSelectionForeground(Color selectionForeground) 设置用于绘制选定项前景的颜色,单元格渲染器可以使用此颜色来渲染文本和图形。DefaultListCellRenderer
使用此颜色来绘制处于选定状态的项目的前景,大多数ListUI
实现安装的渲染器也是如此。此属性的默认值由外观实现定义。
这是一个JavaBeans绑定属性。
- 参数:
-
selectionForeground
- 用于选定列表项前景色的Color
- 参见:
-
getSelectionBackground
返回用于绘制选定项背景的颜色。DefaultListCellRenderer
使用此颜色来绘制处于选定状态的项目的背景,大多数ListUI
实现安装的渲染器也是如此。- 返回:
- 用于绘制选定项背景的颜色
- 参见:
-
setSelectionBackground
@BeanProperty(visualUpdate=true, description="The background color of selected cells.") public void setSelectionBackground(Color selectionBackground) 设置用于绘制选定项背景的颜色,单元格渲染器可以使用它填充选定的单元格。DefaultListCellRenderer
使用此颜色来填充处于选定状态的项目的背景,大多数ListUI
实现安装的渲染器也是如此。此属性的默认值由外观实现定义。
这是一个JavaBeans绑定属性。
- 参数:
-
selectionBackground
- 用于选定单元格背景的Color
- 参见:
-
getVisibleRowCount
public int getVisibleRowCount()返回visibleRowCount
属性的值。有关如何解释此值的详细信息,请参阅setVisibleRowCount(int)
的文档。- 返回:
-
visibleRowCount
属性的值。 - 参见:
-
setVisibleRowCount
@BeanProperty(visualUpdate=true, description="The preferred number of rows to display without requiring scrolling") public void setVisibleRowCount(int visibleRowCount) 设置visibleRowCount
属性,具体含义取决于布局方向:对于VERTICAL
布局方向,这将设置在不需要滚动的情况下显示的首选行数;对于其他方向,它会影响单元格的换行。在
VERTICAL
方向:
设置此属性会影响getPreferredScrollableViewportSize()
方法的返回值,该方法用于计算封闭视口的首选大小。有关更多详细信息,请参阅该方法的文档。在
HORIZONTAL_WRAP
和VERTICAL_WRAP
方向:
这会影响单元格的换行方式。有关更多详细信息,请参阅setLayoutOrientation(int)
的文档。此属性的默认值为
8
。使用负值调用此方法会将属性设置为
0
。这是一个JavaBeans绑定属性。
- 参数:
-
visibleRowCount
- 指定在不需要滚动的情况下显示的首选行数的整数 - 参见:
-
getLayoutOrientation
public int getLayoutOrientation()返回列表的布局方向属性:VERTICAL
表示布局为单列单元格,VERTICAL_WRAP
表示布局为"报纸风格",内容垂直流动然后水平流动,HORIZONTAL_WRAP
表示布局为"报纸风格",内容水平流动然后垂直流动。- 返回:
-
layoutOrientation
属性的值 - 自从:
- 1.4
- 参见:
-
setLayoutOrientation
@BeanProperty(visualUpdate=true, enumerationValues={"JList.VERTICAL","JList.HORIZONTAL_WRAP","JList.VERTICAL_WRAP"}, description="Defines the way list cells are laid out.") public void setLayoutOrientation(int layoutOrientation) 定义列表单元格的布局方式。考虑一个具有五个单元格的JList
。单元格可以以以下方式之一布局:VERTICAL: 0 1 2 3 4 HORIZONTAL_WRAP: 0 1 2 3 4 VERTICAL_WRAP: 0 3 1 4 2
以下是这些布局的描述:
描述VERTICAL、HORIZONTAL_WRAP和VERTICAL_WRAP布局 值 描述 VERTICAL
单元格在单列中垂直布局。 HORIZONTAL_WRAP
单元格水平布局,根据需要换行到新行。如果 visibleRowCount
属性小于或等于零,则根据列表的宽度确定换行;否则,以确保列表中有visibleRowCount
行的方式进行换行。VERTICAL_WRAP
单元格垂直布局,根据需要换行到新列。如果 visibleRowCount
属性小于或等于零,则根据列表的高度确定换行;否则,以visibleRowCount
行进行换行。VERTICAL
。- 参数:
-
layoutOrientation
- 新的布局方向,其中之一:VERTICAL
、HORIZONTAL_WRAP
或VERTICAL_WRAP
- 抛出:
-
IllegalArgumentException
- 如果layoutOrientation
不是允许的值之一 - 自从:
- 1.4
- 参见:
-
getFirstVisibleIndex
返回当前可见的最小列表索引。在从左到右的componentOrientation
中,第一个可见单元格位于列表的左上角附近。在从右到左的方向中,它位于右上角附近。如果没有可见的内容或列表为空,则返回-1
。请注意,返回的单元格可能只是部分可见。- 返回:
- 第一个可见单元格的索引
- 参见:
-
getLastVisibleIndex
返回当前可见的最大列表索引。如果没有可见的内容或列表为空,则返回-1
。请注意,返回的单元格可能只是部分可见。- 返回:
- 最后一个可见单元格的索引
- 参见:
-
ensureIndexIsVisible
public void ensureIndexIsVisible(int index) 将列表在封闭视口内滚动,使指定的单元格完全可见。这会使用指定单元格的边界调用scrollRectToVisible
。为使此方法起作用,JList
必须在JViewport
内。如果给定的索引超出列表的单元格范围,则此方法不会产生任何效果。
- 参数:
-
index
- 要使其可见的单元格的索引 - 参见:
-
setDragEnabled
@BeanProperty(bound=false, description="determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b) 开启或关闭自动拖拽处理。为了启用自动拖拽处理,该属性应设置为true
,并且列表的TransferHandler
需要是non-null
。默认值为false
。尊重此属性并识别用户拖拽手势的工作由外观实现负责,特别是列表的
ListUI
。当启用自动拖拽处理时,大多数外观(包括那些子类化BasicLookAndFeel
的外观)在用户按下鼠标按钮并将鼠标移动几个像素时开始拖放操作。因此,将此属性设置为true
可能会对选择行为产生微妙影响。如果使用忽略此属性的外观,仍然可以通过在列表的
TransferHandler
上调用exportAsDrag
来开始拖放操作。- 参数:
-
b
- 是否启用自动拖拽处理 - 抛出:
-
HeadlessException
- 如果b
为true
且GraphicsEnvironment.isHeadless()
返回true
- 自版本:
- 1.4
- 参见:
-
getDragEnabled
public boolean getDragEnabled()返回是否启用自动拖拽处理。- 返回:
-
dragEnabled
属性的值 - 自版本:
- 1.4
- 参见:
-
setDropMode
设置此组件的拖放模式。为了向后兼容,此属性的默认值为DropMode.USE_SELECTION
。然而,建议使用其他模式以获得更好的用户体验。例如,DropMode.ON
提供类似的行为,显示项目为选定状态,但不会影响列表中的实际选择。JList
支持以下拖放模式:DropMode.USE_SELECTION
DropMode.ON
DropMode.INSERT
DropMode.ON_OR_INSERT
TransferHandler
,则拖放模式才有意义。- 参数:
-
dropMode
- 要使用的拖放模式 - 抛出:
-
IllegalArgumentException
- 如果不支持拖放模式或为null
- 自版本:
- 1.6
- 参见:
-
getDropMode
返回此组件的拖放模式。- 返回:
- 此组件的拖放模式
- 自版本:
- 1.6
- 参见:
-
getDropLocation
返回此组件在DnD操作期间应在其中指示为放置位置的位置,如果当前不需要显示位置,则返回null
。此方法不适用于从
TransferHandler
查询放置位置,因为放置位置仅在TransferHandler
的canImport
返回并允许显示位置后设置。当此属性更改时,组件将触发名称为“dropLocation”的属性更改事件。
默认情况下,监听此属性的更改并在视觉上指示放置位置的责任由列表的
ListUI
负责,它可以直接绘制它,和/或安装一个单元格渲染器来执行此操作。希望实现自定义放置位置绘制和/或替换默认单元格渲染器的开发人员可能需要尊重此属性。- 返回:
- 放置位置
- 自版本:
- 1.6
- 参见:
-
getNextMatch
返回下一个以给定前缀开头的列表元素。- 参数:
-
prefix
- 要匹配的字符串 -
startIndex
- 开始搜索的索引 -
bias
- 搜索方向,可以是Position.Bias.Forward或Position.Bias.Backward。 - 返回:
-
以前缀开头的下一个列表元素的索引;否则为
-1
- 抛出:
-
IllegalArgumentException
- 如果前缀为null
或startIndex超出范围 - 自版本:
- 1.4
-
getToolTipText
返回用于给定事件的工具提示文本。这将覆盖JComponent
的getToolTipText
,首先检查事件发生的单元格渲染器组件,返回其工具提示文本(如果有)。此实现允许您通过在单元格渲染器组件上使用setToolTipText
来指定单元格级别的工具提示文本。注意:为了使
JList
以此方式正确显示其渲染器的工具提示,JList
必须是ToolTipManager
的注册组件。此注册在构造函数中自动完成。但是,如果稍后取消注册JList
,通过调用setToolTipText(null)
,则不再显示来自渲染器的提示。- 覆盖:
-
getToolTipText
在类JComponent
- 参数:
-
event
- 要获取工具提示文本的MouseEvent
- 返回:
- 包含工具提示的字符串
- 参见:
-
locationToIndex
返回列表坐标系中最接近给定位置的单元格索引。要确定单元格是否实际包含指定位置,请将该点与由getCellBounds
提供的单元格边界进行比较。如果模型为空,则此方法返回-1
。这是一个代理方法,委托给列表的
ListUI
中同名方法。如果列表没有ListUI
,则返回-1
。- 参数:
-
location
- 点的坐标 - 返回:
-
最接近给定位置的单元格索引,或
-1
-
indexToLocation
返回列表坐标系中指定项目的原点。如果索引无效,则此方法返回null
。这是一个代理方法,委托给列表的
ListUI
中同名方法。如果列表没有ListUI
,则返回null
。- 参数:
-
index
- 单元格索引 - 返回:
-
单元格的原点,或
null
-
getCellBounds
返回由两个索引指定的单元格范围的边界矩形,在列表的坐标系中。这些索引可以以任何顺序提供。如果较小的索引在列表的单元格范围之外,则此方法返回
null
。如果较小的索引有效,但较大的索引在列表的范围之外,则仅返回第一个索引的边界。否则,返回有效范围的边界。这是一个代理方法,委托给列表的
ListUI
中同名方法。如果列表没有ListUI
,则返回null
。- 参数:
-
index0
- 范围中的第一个索引 -
index1
- 范围中的第二个索引 - 返回:
-
单元格范围的边界矩形,或
null
-
getModel
返回保存由JList
组件显示的项目列表的数据模型。- 返回:
-
提供显示项目列表的
ListModel
- 参见:
-
setModel
@BeanProperty(visualUpdate=true, description="The object that contains the data to be drawn by this JList.") public void setModel(ListModel<E> model) 设置表示列表内容或“值”的模型,通知属性更改侦听器,然后清除列表的选择。这是一个JavaBeans绑定属性。
- 参数:
-
model
- 提供要显示的项目列表的ListModel
- 抛出:
-
IllegalArgumentException
- 如果model
为null
- 参见:
-
setListData
从项目数组构造一个只读的ListModel
,并调用setModel
方法设置该模型。尝试将
null
值传递给此方法会导致未定义的行为,很可能会引发异常。创建的模型直接引用给定的数组。在调用此方法后尝试修改数组会导致未定义的行为。- 参数:
-
listData
- 包含要在列表中显示的项目的E
数组 - 参见:
-
setListData
从Vector
构造一个只读的ListModel
,并调用setModel
方法设置该模型。尝试将
null
值传递给此方法会导致未定义的行为,很可能会引发异常。创建的模型直接引用给定的Vector
。在调用此方法后尝试修改Vector
会导致未定义的行为。- 参数:
-
listData
- 包含要在列表中显示的项目的Vector
- 参见:
-
createSelectionModel
返回一个DefaultListSelectionModel
实例;在构造期间调用以初始化列表的选择模型属性。- 返回:
-
一个
DefaultListSelecitonModel
,用于在构造期间初始化列表的选择模型属性 - 参见:
-
getSelectionModel
返回当前的选择模型。选择模型维护列表的选择状态。更多详情请参阅类级别文档。- 返回:
-
维护列表选择的
ListSelectionModel
- 参见:
-
fireSelectionValueChanged
protected void fireSelectionValueChanged(int firstIndex, int lastIndex, boolean isAdjusting) 通知直接添加到选择模型的ListSelectionListener
列表的选择更改。JList
监听选择模型中的选择更改,并通过调用此方法将更改通知给直接添加到列表的侦听器。此方法使用此列表作为源构造一个带有指定参数的
ListSelectionEvent
,并将其发送到注册的ListSelectionListeners
。- 参数:
-
firstIndex
- 范围内的第一个索引,<= lastIndex
-
lastIndex
- 范围内的最后一个索引,>= firstIndex
-
isAdjusting
- 是否为一系列多个事件中的一个,其中仍在进行更改 - 参见:
-
addListSelectionListener
向列表添加一个侦听器,以便在每次选择更改时得到通知;监听选择状态更改的首选方式。JList
负责监听选择模型中的选择状态更改,并通知给定的侦听器每次更改。发送到侦听器的ListSelectionEvent
具有将source
属性设置为此列表的值。- 参数:
-
listener
- 要添加的ListSelectionListener
- 参见:
-
removeListSelectionListener
从列表中删除一个选择侦听器。- 参数:
-
listener
- 要移除的ListSelectionListener
- 参见:
-
getListSelectionListeners
返回通过addListSelectionListener
方式添加到此JList
的所有ListSelectionListener
的数组。- 返回:
-
此列表上的所有
ListSelectionListener
,如果未添加任何侦听器,则返回空数组 - 自:
- 1.4
- 参见:
-
setSelectionModel
@BeanProperty(description="The selection model, recording which cells are selected.") public void setSelectionModel(ListSelectionModel selectionModel) 将列表的selectionModel
设置为非null
的ListSelectionModel
实现。选择模型处理进行单个选择、连续范围选择和非连续选择的任务。这是一个JavaBeans绑定属性。
- 参数:
-
selectionModel
- 实现选择的ListSelectionModel
- 抛出:
-
IllegalArgumentException
- 如果selectionModel
为null
- 参见:
-
setSelectionMode
@BeanProperty(bound=false, enumerationValues={"ListSelectionModel.SINGLE_SELECTION","ListSelectionModel.SINGLE_INTERVAL_SELECTION","ListSelectionModel.MULTIPLE_INTERVAL_SELECTION"}, description="The selection mode.") public void setSelectionMode(int selectionMode) 设置列表的选择模式。这是一个覆盖方法,直接在选择模型上设置选择模式。以下列表描述了接受的选择模式:
ListSelectionModel.SINGLE_SELECTION
- 一次只能选择一个列表索引。在此模式下,setSelectionInterval
和addSelectionInterval
是等效的,两者都用第二个参数("lead")表示的索引替换当前选择。ListSelectionModel.SINGLE_INTERVAL_SELECTION
- 一次只能选择一个连续区间。在此模式下,addSelectionInterval
的行为类似于setSelectionInterval
(替换当前选择),除非给定的区间紧邻或重叠现有选择,并可用于扩展选择。ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
- 在此模式下,可以选择任何内容。这是默认模式。
- 参数:
-
selectionMode
- 选择模式 - 抛出:
-
IllegalArgumentException
- 如果选择模式不是允许的模式之一 - 参见:
-
getSelectionMode
public int getSelectionMode()返回列表的当前选择模式。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 返回:
- 当前选择模式
- 参见:
-
getAnchorSelectionIndex
返回锚定选择索引。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 返回:
- 锚定选择索引
- 参见:
-
getLeadSelectionIndex
@BeanProperty(bound=false, description="The lead selection index.") public int getLeadSelectionIndex()返回主导选择索引。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 返回:
- 主导选择索引
- 参见:
-
getMinSelectionIndex
返回最小选定的单元格索引,如果选择为空则返回-1
。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 返回:
-
最小选定的单元格索引,或
-1
- 参见:
-
getMaxSelectionIndex
返回最大选定的单元格索引,如果选择为空则返回-1
。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 返回:
- 最大选定的单元格索引
- 参见:
-
isSelectedIndex
public boolean isSelectedIndex(int index) 如果指定的索引被选中,则返回true
,否则返回false
。这是一个覆盖方法,委托给列表的选择模型上同名方法。- 参数:
-
index
- 要查询选择状态的索引 - 返回:
-
true
如果指定的索引被选中,否则为false
- 参见:
-
isSelectionEmpty
如果没有选中任何内容,则返回true
,否则返回false
。这是一个代理方法,委托给列表的选择模型上同名的方法。- 返回:
-
true
如果没有选中任何内容,否则为false
- 参见:
-
clearSelection
public void clearSelection()清除选择;调用此方法后,isSelectionEmpty
将返回true
。这是一个代理方法,委托给列表的选择模型上同名的方法。- 参见:
-
setSelectionInterval
public void setSelectionInterval(int anchor, int lead) 选择指定的区间。包括anchor
和lead
索引。anchor
不必小于或等于lead
。这是一个代理方法,委托给列表的选择模型上同名的方法。有关小于
0
的值如何处理的详细信息,请参阅所使用的选择模型类的文档。- 参数:
-
anchor
- 要选择的第一个索引 -
lead
- 要选择的最后一个索引 - 参见:
-
addSelectionInterval
public void addSelectionInterval(int anchor, int lead) 将选择设置为指定区间与当前选择的并集。包括anchor
和lead
索引。anchor
不必小于或等于lead
。这是一个代理方法,委托给列表的选择模型上同名的方法。有关小于
0
的值如何处理的详细信息,请参阅所使用的选择模型类的文档。- 参数:
-
anchor
- 要添加到选择中的第一个索引 -
lead
- 要添加到选择中的最后一个索引 - 参见:
-
removeSelectionInterval
public void removeSelectionInterval(int index0, int index1) 将选择设置为指定区间与当前选择的差集。移除index0
和index1
索引。index0
不必小于或等于index1
。这是一个代理方法,委托给列表的选择模型上同名的方法。有关小于
0
的值如何处理的详细信息,请参阅所使用的选择模型类的文档。- 参数:
-
index0
- 要从选择中移除的第一个索引 -
index1
- 要从选择中移除的最后一个索引 - 参见:
-
setValueIsAdjusting
public void setValueIsAdjusting(boolean b) 设置选择模型的valueIsAdjusting
属性。当为true
时,即将发生的选择更改应被视为单个更改的一部分。此属性在内部使用,通常开发人员不需要调用此方法。例如,在响应用户拖动时更新模型时,当拖动开始时,该属性的值设置为true
,当拖动完成时设置为false
。这允许侦听器仅在更改已经完成时更新,而不是处理所有中间值。如果要进行一系列应被视为单个更改的更改,可能需要直接使用此方法。
这是一个代理方法,委托给列表的选择模型上同名的方法。有关更多详细信息,请参阅
ListSelectionModel.setValueIsAdjusting(boolean)
的文档。- 参数:
-
b
- 属性的新值 - 参见:
-
getValueIsAdjusting
public boolean getValueIsAdjusting()返回选择模型的isAdjusting
属性的值。这是一个代理方法,委托给列表的选择模型上同名的方法。
- 返回:
-
选择模型的
isAdjusting
属性的值。 - 参见:
-
getSelectedIndices
public int[] getSelectedIndices()返回所有选定的索引数组,按照递增顺序排列。- 返回:
- 所有选定的索引数组,按照递增顺序排列,如果没有选中任何内容则返回空数组
- 参见:
-
setSelectedIndex
@BeanProperty(bound=false, description="The index of the selected cell.") public void setSelectedIndex(int index) 选择单个单元格。如果给定的索引大于或等于模型大小,则不执行任何操作。这是一个使用选择模型上的setSelectionInterval
的便利方法。有关小于0
的值如何处理的详细信息,请参阅所使用的选择模型类的文档。- 参数:
-
index
- 要选择的单元格的索引 - 参见:
-
setSelectedIndices
public void setSelectedIndices(int[] indices) 将选择更改为给定数组指定的索引集。忽略大于或等于模型大小的索引。这是一个清除选择然后使用选择模型上的addSelectionInterval
的便利方法来添加索引。有关小于0
的值如何处理的详细信息,请参阅所使用的选择模型类的文档。- 参数:
-
indices
- 要选择的单元格索引数组,非空
- 抛出:
-
NullPointerException
- 如果给定的数组为null
- 参见:
-
getSelectedValues
Deprecated.As of JDK 1.7, replaced bygetSelectedValuesList()
返回所有选定值的数组,根据它们在列表中的索引按递增顺序排列。- 返回:
- 选定的值数组,如果没有选中任何内容则返回空数组
- 参见:
-
getSelectedValuesList
返回所有选定项的列表,根据它们在列表中的索引按递增顺序排列。- 返回:
- 所选项目,如果没有选中任何内容则返回空列表
- 自:
- 1.7
- 参见:
-
getSelectedIndex
public int getSelectedIndex()返回最小的选定单元格索引;当列表中只选择了一个项目时,返回该选择。当选择了多个项目时,返回最小的选定索引。如果没有选择,则返回-1
。此方法是一个代理,委托给
getMinSelectionIndex
。- 返回:
- 最小的选定单元格索引
- 参见:
-
getSelectedValue
返回最小选定单元格索引的值;当列表中只选择了一个项目时,返回所选值。当选择了多个项目时,返回最小选定索引的值。如果没有选择,则返回null
。这是一个便利方法,简单地返回
getMinSelectionIndex
的模型值。- 返回:
- 第一个选定值
- 参见:
-
setSelectedValue
从列表中选择指定的对象。如果传递的对象为null
,则清除选择。- 参数:
-
anObject
- 要选择的对象 -
shouldScroll
- 如果列表应滚动以显示所选对象,则为true
;否则为false
-
getPreferredScrollableViewportSize
计算显示visibleRowCount
行所需的视口大小。此方法返回的值取决于布局方向:VERTICAL
:
如果已设置fixedCellWidth
和fixedCellHeight
(显式设置或通过指定原型单元格值),则这很简单。宽度只是fixedCellWidth
加上列表的水平插入。高度是fixedCellHeight
乘以visibleRowCount
,再加上列表的垂直插入。如果
fixedCellWidth
或fixedCellHeight
没有指定,则使用启发式方法。如果模型为空,则宽度为fixedCellWidth
,如果大于0
,否则为256
的硬编码值。高度是fixedCellHeight
乘以visibleRowCount
,如果fixedCellHeight
大于0
,否则为16
乘以visibleRowCount
的硬编码值。如果模型不为空,则宽度为首选大小的宽度,通常是最宽列表元素的宽度。高度是索引为0的单元格的高度乘以
visibleRowCount
,再加上列表的垂直插入。VERTICAL_WRAP
或HORIZONTAL_WRAP
:
此方法简单地返回getPreferredSize
的值。列表的ListUI
应该重写getPreferredSize
以返回适当的值。- 指定者:
-
getPreferredScrollableViewportSize
在接口Scrollable
- 返回:
-
包含显示
visibleRowCount
行所需的视口大小的尺寸 - 参见:
-
getScrollableUnitIncrement
返回滚动以显示下一个或上一个行(用于垂直滚动)或列(用于水平滚动)所需的距离。对于水平滚动,如果布局方向为
VERTICAL
,则返回列表的字体大小(如果字体为null
则返回1
)。- 指定者:
-
getScrollableUnitIncrement
在接口Scrollable
- 参数:
-
visibleRect
- 视口内可见的视图区域 -
orientation
-SwingConstants.HORIZONTAL
或SwingConstants.VERTICAL
-
direction
- 小于或等于零向上/后滚动,大于零向下/前滚动 - 返回:
- 指定方向滚动的“单位”增量;始终为正数
- 抛出:
-
IllegalArgumentException
- 如果visibleRect
为null
,或orientation
不是SwingConstants.VERTICAL
或SwingConstants.HORIZONTAL
之一 - 参见:
-
getScrollableBlockIncrement
返回滚动以显示下一个或上一个块所需的距离。对于垂直滚动,使用以下规则:
- 向下滚动时,返回滚动的距离,使最后可见的元素成为第一个完全可见的元素
- 向上滚动时,返回滚动的距离,使第一个可见的元素成为最后一个完全可见的元素
- 如果列表为空,则返回
visibleRect.height
对于水平滚动,当布局方向为
VERTICAL_WRAP
或HORIZONTAL_WRAP
时:- 向右滚动时,返回滚动的距离,使最后可见的元素成为第一个完全可见的元素
- 向左滚动时,返回滚动的距离,使第一个可见的元素成为最后一个完全可见的元素
- 如果列表为空,则返回
visibleRect.width
对于水平滚动和
VERTICAL
方向,返回visibleRect.width
。请注意,
visibleRect
的值必须等于this.getVisibleRect()
的值。- 指定者:
-
getScrollableBlockIncrement
在接口Scrollable
- 参数:
-
visibleRect
- 视口内可见的视图区域 -
orientation
-SwingConstants.HORIZONTAL
或SwingConstants.VERTICAL
-
direction
- 小于或等于零向上/后滚动,大于零向下/前滚动 - 返回:
- 指定方向滚动的“块”增量;始终为正数
- 抛出:
-
IllegalArgumentException
- 如果visibleRect
为null
,或orientation
不是SwingConstants.VERTICAL
或SwingConstants.HORIZONTAL
之一 - 参见:
-
getScrollableTracksViewportWidth
如果此JList
显示在JViewport
中且视口宽度大于列表的首选宽度,或者布局方向为HORIZONTAL_WRAP
且visibleRowCount <= 0
,则返回true
;否则返回false
。如果返回
false
,则不跟踪视口的宽度。这允许如果JViewport
本身嵌入在JScrollPane
中,则进行水平滚动。- 指定者:
-
getScrollableTracksViewportWidth
在接口Scrollable
- 返回:
- 是否应强制包含视口的宽度与列表的宽度相匹配
- 参见:
-
getScrollableTracksViewportHeight
如果此JList
显示在JViewport
中且视口高度大于列表的首选高度,或者布局方向为VERTICAL_WRAP
且visibleRowCount <= 0
,则返回true
;否则返回false
。如果返回
false
,则不跟踪视口的高度。这允许如果JViewport
本身嵌入在JScrollPane
中,则进行垂直滚动。- 指定者:
-
getScrollableTracksViewportHeight
在接口Scrollable
- 返回:
- 是否应强制包含视口的高度与列表的高度相匹配
- 参见:
-
paramString
返回此JList
的String
表示形式。此方法仅用于调试目的,返回的String
的内容和格式可能因实现而异。返回的String
可能为空,但不会是null
。- 覆盖:
-
paramString
在类JComponent
- 返回:
-
此
JList
的String
表示形式。
-
getAccessibleContext
获取与此JList
关联的AccessibleContext
。对于JList
,AccessibleContext
采用AccessibleJList
的形式。如有必要,将创建一个新的
AccessibleJList
实例。- 指定者:
-
getAccessibleContext
在接口Accessible
- 覆盖:
-
getAccessibleContext
在类Component
- 返回:
-
作为此
JList
的AccessibleContext
的AccessibleJList
-
getSelectedValuesList()
替换