模块  java.desktop
软件包  javax.swing

Class JList<E>

  • 参数类型
    E - 此列表的元素类型
    实现的所有接口
    ImageObserverMenuContainerSerializableAccessibleScrollable

    @JavaBean(defaultProperty="UI",
              description="A component which allows for the selection of one or more objects from a list.")
    public class JList<E>
    extends JComponent
    implements Scrollable, Accessible
    显示对象列表并允许用户选择一个或多个项目的组件。 单独的模型ListModel维护列表的内容。

    使用自动为您构建只读ListModel实例的JList构造函数可以轻松显示数组或对象向量:

       // Create a JList that displays strings from an array String[] data = {"one", "two", "three", "four"}; JList<String> myList = new JList<String>(data); // Create a JList that displays the superclasses of JList.class, by // creating it with a Vector populated with this data 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); // The automatically created model is stored in JList's "model" // property, which you can retrieve ListModel<Class<?>> model = myList.getModel(); for(int i = 0; i < model.getSize(); i++) { System.out.println(model.getElementAt(i)); }  

    ListModel可以直接供给到JList通过一个构造的方式或setModel方法。 内容不必是静态的 - 项目数量,项目的值可以随时间变化。 每次发生更改时,正确的ListModel实现都会通知已添加到其中的javax.swing.event.ListDataListener集。 这些更改的特征是javax.swing.event.ListDataEvent ,它标识已修改,添加或删除的列表索引的范围。 JListListUI负责通过收听模型使视觉表示与变化保持ListUI

    简单,动态内容, JList应用程序可以使用DefaultListModel类来维护列表元素。 此类实现ListModel接口,并提供java.util.Vector的API。 需要更自定义ListModel实现的应用程序可能希望子类AbstractListModel ,它为管理和通知侦听器提供基本支持。 例如, AbstractListModel的只读实现:

       // This list model has about 2^16 elements. Enjoy scrolling. 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提供了方便的方法来轻松管理选择。 这些方法,例如setSelectedIndexgetSelectedValue ,是涵盖与选择模型交互的细节的覆盖方法。 默认情况下, JList的选择模型配置为允许一次选择任何项目组合; 选择模式MULTIPLE_INTERVAL_SELECTION 可以直接在选择模型上更改选择模式,也可以通过JList的封面方法更改选择模式。 更新选择模型以响应用户手势的责任在于列表的ListUI

    正确的ListSelectionModel实现通知每次更改选择时添加到其中的javax.swing.event.ListSelectionListener集。 这些变化的特征是javax.swing.event.ListSelectionEvent ,它标识了选择变化的范围。

    监听列表选择中更改的首选方法是将ListSelectionListener直接添加到JList 然后JList负责听取选择模型并通知听众变化。

    为了使列表的可视化表示保持最新,监听选择更改的责任在于列表的ListUI

    JList中的单元格JList由名为单元格渲染器的委托处理,该委托安装在列表中作为cellRenderer属性。 渲染器提供java.awt.Component ,用作“橡皮图章”来绘制细胞。 每次需要绘制一个单元格时,列表的ListUI向单元格渲染器询问该组件,将其移动到位,并通过其paint方法绘制单元格的内容。 列表的ListUI安装了一个默认的单元格渲染器,它使用JLabel组件进行渲染。 您可以使用以下代码替换您自己的渲染器:

       // Display an icon and a string for each object in the list. class MyCellRenderer extends JLabel implements ListCellRenderer<Object> { static final ImageIcon longIcon = new ImageIcon("long.gif"); static final ImageIcon shortIcon = new ImageIcon("short.gif"); // This is the only method defined by ListCellRenderer. // We just reconfigure the JLabel each time we're called. public Component getListCellRendererComponent( JList<?> list, // the list Object value, // value to display int index, // cell index boolean isSelected, // is the cell selected boolean cellHasFocus) // does the cell have focus { 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通过向单元格渲染器询问每个列表项的首选大小来确定单元格的大小。 对于大型商品列表而言,这可能是昂贵的。 要避免这些计算,可以在列表中设置fixedCellWidthfixedCellHeight ,或者根据单个原型值自动计算这些值:

       JList<String> bigDataList = new JList<String>(bigData); // We don't want the JList implementation to compute the width // or height of all of the list cells, so we give it a string // that's as big as we'll need for any cell. It uses this to // compute values for the fixedCellWidth and fixedCellHeight // properties. bigDataList.setPrototypeCellValue("Index 1234567890");  

    JList未直接实现滚动。 要创建滚动列表,请将其设置为JScrollPane的视口视图。 例如:

      JScrollPane scrollPane = new JScrollPane(myList);
    
     // Or in two steps:
     JScrollPane scrollPane = new JScrollPane();
     scrollPane.getViewport().setView(myList); 

    JList不提供双击或三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("Double clicked on Item " + index);
              }
         }
     };
     list.addMouseListener(mouseListener); 

    警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    有关进一步的文档,请参见How to Use Lists电话:The Java Tutorial

    从以下版本开始:
    1.2
    另请参见:
    ListModelAbstractListModelDefaultListModelListSelectionModelDefaultListSelectionModelListCellRendererDefaultListCellRendererSerialized Form
    • 字段详细信息

      • VERTICAL_WRAP

        public static final int VERTICAL_WRAP
        表示“报纸样式”布局,单元格垂直然后水平流动。
        从以下版本开始:
        1.4
        另请参见:
        setLayoutOrientation(int)常数字段值
      • HORIZONTAL_WRAP

        public static final int HORIZONTAL_WRAP
        表示“报纸样式”布局,单元格水平流动然后垂直流动。
        从以下版本开始:
        1.4
        另请参见:
        setLayoutOrientation(int)常数字段值
    • 构造方法详细信息

      • JList

        public JList​(ListModel<E> dataModel)
        构造一个JList ,显示指定的non-null模型中的元素。 所有JList构造函数都委托给这个。

        此构造函数将列表注册到ToolTipManager ,允许单元格渲染器提供工具提示。

        参数
        dataModel - 列表的模型
        异常
        IllegalArgumentException - 如果型号是 null
      • JList

        public JList​(E[] listData)
        构造一个显示指定数组中元素的JList 此构造函数为给定数组创建只读模型,然后委托给带有ListModel的构造ListModel

        尝试将null值传递给此方法会导致未定义的行为,并且很可能是异常。 创建的模型直接引用给定的数组。 在构造列表后尝试修改数组会导致未定义的行为。

        参数
        listData - 要加载到数据模型中的对象数组, non-null
      • JList

        public JList​(Vector<? extends E> listData)
        构造一个JList ,显示指定的Vector的元素。 此构造函数为给定的Vector创建只读模型,然后委托给带有ListModel的构造ListModel

        尝试将null值传递给此方法会导致未定义的行为,并且很可能会导致异常。 创建的模型直接引用给定的Vector 在构造列表后尝试修改Vector导致未定义的行为。

        参数
        listData -的 Vector被加载到数据模型, non-null
      • JList

        public JList()
        使用空的只读模型构造 JList
    • 方法详细信息

      • getUI

        public ListUI getUI()
        返回呈现此组件的外观对象 ListUI
        重写:
        getUI在类 JComponent
        结果
        呈现此组件的 ListUI对象
      • getPrototypeCellValue

        public E getPrototypeCellValue()
        返回“原型”单元格值 - 用于计算单元格的固定宽度和高度的值。 如果没有这样的值,这可以是null
        结果
        prototypeCellValue属性的值
        另请参见:
        setPrototypeCellValue(E)
      • setPrototypeCellValue

        @BeanProperty(visualUpdate=true,
                      description="The cell prototype value, used to compute cell width and height.")
        public void setPrototypeCellValue​(E prototypeCellValue)
        设置prototypeCellValue属性,然后(如果新值为non-null ),通过从单元格渲染器请求给定值(和索引0)的单元格渲染器组件并使用该组件的首选大小来计算fixedCellWidthfixedCellHeight属性。

        当列表太长而不允许ListUI计算每个单元格的宽度/高度时,此方法很有用,并且已知单个单元格值占据的空间与任何其他单元格一样多,即所谓的原型。

        虽然所有三种的prototypeCellValuefixedCellHeight ,和fixedCellWidth性质可通过该方法被修改, PropertyChangeEvent通知仅发送的时prototypeCellValue属性的变化。

        要查看设置此属性的示例,请参阅上面的class description

        此属性的默认值为null

        这是一个JavaBeans绑定属性。

        参数
        prototypeCellValue - 基于 fixedCellWidthfixedCellHeight
        另请参见:
        getPrototypeCellValue()setFixedCellWidth(int)setFixedCellHeight(int)Container.addPropertyChangeListener(java.beans.PropertyChangeListener)
      • getFixedCellWidth

        public int getFixedCellWidth()
        返回 fixedCellWidth属性的值。
        结果
        固定的单元格宽度
        另请参见:
        setFixedCellWidth(int)
      • getFixedCellHeight

        public int getFixedCellHeight()
        返回 fixedCellHeight属性的值。
        结果
        固定的细胞高度
        另请参见:
        setFixedCellHeight(int)
      • setCellRenderer

        @BeanProperty(visualUpdate=true,
                      description="The component used to draw the cells.")
        public void setCellRenderer​(ListCellRenderer<? super E> cellRenderer)
        设置用于绘制列表中每个单元格的委托。 class level documentation中详细讨论了单元格渲染器的工作。

        如果prototypeCellValue属性为non-null ,则设置单元格渲染器也会导致重新计算fixedCellWidthfixedCellHeight属性。 只有一个PropertyChangeEvent但是生成-为cellRenderer财产。

        此属性的默认值由ListUI委托提供,即由外观实现提供。

        这是一个JavaBeans绑定属性。

        参数
        cellRenderer - 绘制列表单元格的 ListCellRenderer
        另请参见:
        getCellRenderer()
      • getSelectionForeground

        public Color getSelectionForeground()
        返回用于绘制所选项目前景的颜色。 DefaultListCellRenderer使用此颜色绘制处于选定状态的项目的前景,大多数ListUI实现安装的渲染器也是ListUI
        结果
        绘制所选项目前景的颜色
        另请参见:
        setSelectionForeground(java.awt.Color)DefaultListCellRenderer
      • getSelectionBackground

        public Color getSelectionBackground()
        返回用于绘制所选项目背景的颜色。 DefaultListCellRenderer使用此颜色绘制处于选定状态的项目的背景,大多数ListUI实现安装的渲染器也是ListUI
        结果
        用于绘制所选项目背景的颜色
        另请参见:
        setSelectionBackground(java.awt.Color)DefaultListCellRenderer
      • getVisibleRowCount

        public int getVisibleRowCount()
        返回visibleRowCount属性的值。 有关如何解释此值的详细信息,请参阅setVisibleRowCount(int)的文档。
        结果
        visibleRowCount属性的值。
        另请参见:
        setVisibleRowCount(int)
      • 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_WRAPVERTICAL_WRAP方向:
        这会影响细胞的包裹方式。 有关更多详细信息,请参阅setLayoutOrientation(int)的文档。

        此属性的默认值为8

        使用负值调用此方法会导致该属性设置为0

        这是一个JavaBeans绑定属性。

        参数
        visibleRowCount - 一个整数,指定要显示的首选行数,而不需要滚动
        另请参见:
        getVisibleRowCount()getPreferredScrollableViewportSize()setLayoutOrientation(int)JComponent.getVisibleRect()JViewport
      • getLayoutOrientation

        public int getLayoutOrientation()
        返回列表的布局方向属性: VERTICAL如果布局是单个单元格列), VERTICAL_WRAP如果布局是“报纸样式”,内容垂直然后水平流动,或 HORIZONTAL_WRAP如果布局是“报纸样式”的内容然后垂直流动。
        结果
        layoutOrientation属性的值
        从以下版本开始:
        1.4
        另请参见:
        setLayoutOrientation(int)
      • setLayoutOrientation

        @BeanProperty(visualUpdate=true,
                      enumerationValues={"JList.VERTICAL","JList.HORIZONTAL_WRAP","JList.VERTICAL_WRAP"},
                      description="Defines the way list cells are layed 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 

        这些布局的描述如下:

        Describes layouts VERTICAL,HORIZONTAL_WRAP, and VERTICAL_WRAP Value Description VERTICAL Cells are layed out vertically in a single column. HORIZONTAL_WRAP Cells are layed out horizontally, wrapping to a new row as necessary. If the visibleRowCount property is less than or equal to zero, wrapping is determined by the width of the list; otherwise wrapping is done in such a way as to ensure visibleRowCount rows in the list. VERTICAL_WRAP Cells are layed out vertically, wrapping to a new column as necessary. If the visibleRowCount property is less than or equal to zero, wrapping is determined by the height of the list; otherwise wrapping is done at visibleRowCount rows.
        此属性的默认值为VERTICAL
        参数
        layoutOrientation -新的布局方向,其一: VERTICALHORIZONTAL_WRAPVERTICAL_WRAP
        异常
        IllegalArgumentException - 如果 layoutOrientation不是允许值之一
        从以下版本开始:
        1.4
        另请参见:
        getLayoutOrientation()setVisibleRowCount(int)getScrollableTracksViewportHeight()getScrollableTracksViewportWidth()
      • getFirstVisibleIndex

        @BeanProperty(bound=false)
        public int getFirstVisibleIndex()
        返回当前可见的最小列表索引。 在从左到右的componentOrientation ,第一个可见单元格最靠近列表的左上角。 在从右到左的方向上,它被发现最靠近右上角。 如果看不到任何内容或列表为空,则返回-1 请注意,返回的单元格可能只是部分可见。
        结果
        第一个可见细胞的索引
        另请参见:
        getLastVisibleIndex()JComponent.getVisibleRect()
      • getLastVisibleIndex

        @BeanProperty(bound=false)
        public int getLastVisibleIndex()
        返回当前可见的最大列表索引。 如果看不到任何内容或列表为空,则返回-1 请注意,返回的单元格可能只是部分可见。
        结果
        最后一个可见单元格的索引
        另请参见:
        getFirstVisibleIndex()JComponent.getVisibleRect()
      • ensureIndexIsVisible

        public void ensureIndexIsVisible​(int index)
        在封闭的视口中滚动列表以使指定的单元格完全可见。 这将使用指定单元格的边界调用scrollRectToVisible 要使用此方法, JList必须在JViewport范围内。

        如果给定的索引在列表的单元格范围之外,则此方法不会产生任何结果。

        参数
        index - 要显示的单元格的索引
        另请参见:
        JComponent.scrollRectToVisible(java.awt.Rectangle)JComponent.getVisibleRect()
      • setDragEnabled

        @BeanProperty(bound=false,
                      description="determines whether automatic drag handling is enabled")
        public void setDragEnabled​(boolean b)
        打开或关闭自动拖动处理。 为了启用自动拖动处理,此属性应设置为true ,列表的TransferHandler必须为non-null dragEnabled属性的默认值为false

        尊重此属性以及识别用户拖动手势的工作在于外观和实现,特别是列表的ListUI 启用自动拖动处理后,只要用户在项目上按下鼠标按钮,然后将鼠标移动几个像素,大多数外观(包括子类BasicLookAndFeel )都会开始拖放操作。 因此,将此属性设置为true可能会对选择的行为产生微妙影响。

        如果使用忽略此属性的外观,您仍然可以通过调用列表exportAsDrag上的TransferHandler开始拖放操作。

        参数
        b - 是否启用自动拖动处理
        异常
        HeadlessException - 如果 btrueGraphicsEnvironment.isHeadless()回报 true
        从以下版本开始:
        1.4
        另请参见:
        GraphicsEnvironment.isHeadless()getDragEnabled()JComponent.setTransferHandler(javax.swing.TransferHandler)TransferHandler
      • getDragEnabled

        public boolean getDragEnabled()
        返回是否启用自动拖动处理。
        结果
        dragEnabled属性的值
        从以下版本开始:
        1.4
        另请参见:
        setDragEnabled(boolean)
      • setDropMode

        public final void setDropMode​(DropMode dropMode)
        设置此组件的放置模式。 为了向后兼容,此属性的默认值为DropMode.USE_SELECTION 但是,建议使用其他模式之一,以改善用户体验。 例如, DropMode.ON提供了类似于显示所选项目的行为,但这样做不会影响列表中的实际选择。

        JList支持以下丢弃模式:

        • DropMode.USE_SELECTION
        • DropMode.ON
        • DropMode.INSERT
        • DropMode.ON_OR_INSERT
        只有当此组件具有接受drop的TransferHandler ,drop mode才有意义。
        参数
        dropMode - 要使用的放置模式
        异常
        IllegalArgumentException - 如果不支持放置模式或 null
        从以下版本开始:
        1.6
        另请参见:
        getDropMode()getDropLocation()JComponent.setTransferHandler(javax.swing.TransferHandler)TransferHandler
      • getDropLocation

        @BeanProperty(bound=false)
        public final JList.DropLocation getDropLocation()
        返回此组件在组件上的DnD操作期间应在视觉上指示为放置位置的位置,如果当前未显示任何位置,则返回null

        此方法不适用于从TransferHandler查询放置位置,因为放置位置仅在TransferHandlercanImport返回并允许显示位置后设置。

        当此属性更改时,组件将触发名称为“dropLocation”的属性更改事件。

        默认情况下,监听此属性更改并在视觉上指示放置位置的ListUI在于列表的ListUI ,它可以直接绘制它和/或安装单元格渲染器来执行此操作。 希望实现自定义放置位置绘制和/或替换默认单元格渲染器的开发人员可能需要遵守此属性。

        结果
        下降的位置
        从以下版本开始:
        1.6
        另请参见:
        setDropMode(javax.swing.DropMode)TransferHandler.canImport(TransferHandler.TransferSupport)
      • getNextMatch

        public int getNextMatch​(String prefix,
                                int startIndex,
                                Position.Bias bias)
        返回下一个列表元素,其 toString值以给定前缀开头。
        参数
        prefix - 要测试匹配的字符串
        startIndex - 开始搜索的索引
        bias - 搜索方向,Position.Bias.Forward或Position.Bias.Backward。
        结果
        以前缀开头的下一个列表元素的索引; 否则-1
        异常
        IllegalArgumentException - 如果前缀是 null或者startIndex超出范围
        从以下版本开始:
        1.4
      • getToolTipText

        public String getToolTipText​(MouseEvent event)
        返回要用于给定事件的工具提示文本。 这将覆盖JComponentgetToolTipText以首先检查发生事件的单元格的单元格渲染器组件,并返回其工具提示文本(如果有)。 此实现允许您在单元格级别上指定工具提示文本,方法setToolTipText在单元格渲染器组件上使用setToolTipText

        注意: JList正确地以这种方式显示其渲染的工具提示, JList必须是注册的组件ToolTipManager 此注册在构造函数中自动完成。 但是,如果稍后JList未注册,则通过调用setToolTipText(null) ,将不再显示渲染器的提示。

        重写:
        getToolTipText在类 JComponent
        参数
        event - 获取工具提示文本的 MouseEvent
        结果
        包含工具提示的字符串
        另请参见:
        JComponent.setToolTipText(java.lang.String)JComponent.getToolTipText()
      • locationToIndex

        public int locationToIndex​(Point location)
        返回列表坐标系中最接近给定位置的单元格索引。 要确定单元格是否实际包含指定位置,请将该点与单元格的边界进行比较,如getCellBounds 如果模型为空,则此方法返回-1

        这是一个封面方法,它委托列表ListUI中的ListUI 它返回-1如果列表中没有ListUI

        参数
        location - 该点的坐标
        结果
        最接近给定位置的单元 -1 ,或 -1
      • indexToLocation

        public Point indexToLocation​(int index)
        返回列表坐标系中指定项的原点。 如果索引无效,则此方法返回null

        这是一个封面方法,它委托列表ListUI中的ListUI 它返回null如果列表中没有ListUI

        参数
        index - 单元 index
        结果
        细胞的起源,或 null
      • getCellBounds

        public Rectangle getCellBounds​(int index0,
                                       int index1)
        返回列表坐标系中的边界矩形,用于由两个索引指定的单元格范围。 这些指数可以任何顺序提供。

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

        这是一个封面方法,它委托列表ListUI中的ListUI 它返回null如果列表中没有ListUI

        参数
        index0 - 该范围内的第一个索引
        index1 - 范围内的第二个索引
        结果
        单元格范围的边界矩形,或 null
      • setListData

        public void setListData​(E[] listData)
        从项目数组构造只读ListModel ,并使用此模型调用setModel

        尝试将null值传递给此方法会导致未定义的行为,并且很可能是异常。 创建的模型直接引用给定的数组。 尝试在调用此方法后修改数组会导致未定义的行为。

        参数
        listData - 包含要在列表中显示的项目的 E数组
        另请参见:
        setModel(javax.swing.ListModel<E>)
      • setListData

        public void setListData​(Vector<? extends E> listData)
        Vector构造只读ListModel ,并使用此模型调用setModel

        尝试将null值传递给此方法会导致未定义的行为,并且很可能是异常。 创建的模型直接引用给定的Vector 尝试在调用此方法后修改Vector导致未定义的行为。

        参数
        listData - 包含要在列表中显示的项目的 Vector
        另请参见:
        setModel(javax.swing.ListModel<E>)
      • fireSelectionValueChanged

        protected void fireSelectionValueChanged​(int firstIndex,
                                                 int lastIndex,
                                                 boolean isAdjusting)
        通知ListSelectionListener直接添加到对选择模型所做的选择更改列表中。 JList侦听对选择模型中的选择所做的更改,并通过调用此方法将通知直接转发给添加到列表中的侦听器。

        此方法使用此列表作为源和指定的参数构造ListSelectionEvent ,并将其发送到已注册的ListSelectionListeners

        参数
        firstIndex - 范围中的第一个索引, <= lastIndex
        lastIndex - 该范围内的最后一个指数, >= firstIndex
        isAdjusting - 这是否是一系列多个事件中的一个,其中仍在进行更改
        另请参见:
        addListSelectionListener(javax.swing.event.ListSelectionListener)removeListSelectionListener(javax.swing.event.ListSelectionListener)ListSelectionEventEventListenerList
      • addListSelectionListener

        public void addListSelectionListener​(ListSelectionListener listener)
        向列表添加侦听器,以便在每次更改选择时收到通知; 听取选择状态变化的首选方式。 JList负责监听选择模型中的选择状态更改,并通知给定的侦听器每个更改。 ListSelectionEvent发送到侦听器■找一source属性设置为这个列表。
        参数
        listener - 要添加的 ListSelectionListener
        另请参见:
        getSelectionModel()getListSelectionListeners()
      • setSelectionModel

        @BeanProperty(description="The selection model, recording which cells are selected.")
        public void setSelectionModel​(ListSelectionModel selectionModel)
        将列表的selectionModel设置为非null ListSelectionModel实现。 选择模型处理进行单个选择,连续范围选择和非连续选择的任务。

        这是一个JavaBeans绑定属性。

        参数
        selectionModel - 实现选择的 ListSelectionModel
        异常
        IllegalArgumentException - 如果 selectionModelnull
        另请参见:
        getSelectionModel()
      • 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 - 一次只能选择一个列表索引。 在此模式下, setSelectionIntervaladdSelectionInterval是等效的,它们都用第二个参数(“lead”)表示的索引替换当前选择。
        • ListSelectionModel.SINGLE_INTERVAL_SELECTION - 一次只能选择一个连续的间隔。 在此模式下, addSelectionInterval行为类似于setSelectionInterval (替换当前选择),除非给定间隔与现有选择紧邻或重叠,并且可用于增大选择。
        • ListSelectionModel.MULTIPLE_INTERVAL_SELECTION - 在此模式下,可以选择的内容没有限制。 此模式是默认模式。
        参数
        selectionMode - 选择模式
        异常
        IllegalArgumentException - 如果选择模式不是允许的模式之一
        另请参见:
        getSelectionMode()
      • getSelectionMode

        public int getSelectionMode()
        返回列表的当前选择模式。 这是一种封面方法,它委托列表选择模型上的同名方法。
        结果
        当前的选择模式
        另请参见:
        setSelectionMode(int)
      • getMinSelectionIndex

        @BeanProperty(bound=false)
        public int getMinSelectionIndex()
        返回最小的选定单元-1引,如果选择为空,则返回-1 这是一种封面方法,它委托列表选择模型上的同名方法。
        结果
        最小的选定单元 -1引,或 -1
        另请参见:
        ListSelectionModel.getMinSelectionIndex()
      • getMaxSelectionIndex

        @BeanProperty(bound=false)
        public int getMaxSelectionIndex()
        返回最大的选定单元-1引,如果选择为空,则返回-1 这是一种封面方法,它委托列表选择模型上的同名方法。
        结果
        最大的选定细胞指数
        另请参见:
        ListSelectionModel.getMaxSelectionIndex()
      • isSelectedIndex

        public boolean isSelectedIndex​(int index)
        如果选择了指定的索引,则返回true ,否则false 这是一种封面方法,它委托列表选择模型上的同名方法。
        参数
        index - 要为选择状态查询的索引
        结果
        true如果选择了指定的索引,否则为 false
        另请参见:
        ListSelectionModel.isSelectedIndex(int)setSelectedIndex(int)
      • clearSelection

        public void clearSelection()
        清除选择; 调用此方法后, isSelectionEmpty将返回true 这是一种封面方法,它委托列表选择模型上的同名方法。
        另请参见:
        ListSelectionModel.clearSelection()isSelectionEmpty()
      • setValueIsAdjusting

        public void setValueIsAdjusting​(boolean b)
        设置选择模型的valueIsAdjusting属性。 true ,即将进行的选择更改应视为单个更改的一部分。 此属性在内部使用,开发人员通常不需要调用此方法。 例如,当模型是响应于用户拖动被更新,该属性的值被设置为true当拖动开始,并设置为false当拖动结束。 这允许侦听器仅在更改完成时更新,而不是处理所有中间值。

        如果进行一系列应该被视为单个更改的一部分的更改,您可能希望直接使用它。

        这是一种封面方法,它委托列表选择模型上的同名方法。 有关更多详细信息,请参阅ListSelectionModel.setValueIsAdjusting(boolean)的文档。

        参数
        b - 该属性的新值
        另请参见:
        ListSelectionModel.setValueIsAdjusting(boolean)ListSelectionEvent.getValueIsAdjusting()getValueIsAdjusting()
      • setSelectedValue

        public void setSelectedValue​(Object anObject,
                                     boolean shouldScroll)
        从列表中选择指定的对象。 如果传递的对象是null ,则清除选择。
        参数
        anObject - 要选择的对象
        shouldScroll - true如果列表应滚动以显示所选对象(如果存在); 否则false
      • getPreferredScrollableViewportSize

        @BeanProperty(bound=false)
        public Dimension getPreferredScrollableViewportSize()
        计算显示visibleRowCount行所需的视口大小。 此方法返回的值取决于布局方向:

        VERTICAL
        如果已设置fixedCellWidthfixedCellHeight (显式或通过指定原型单元格值),则这是微不足道的。 宽度只是fixedCellWidth加上列表的水平插入。 高度是fixedCellHeight乘以visibleRowCount ,加上列表的垂直插图。

        如果未指定fixedCellWidthfixedCellHeight ,则使用启发式。 如果模型为空,则宽度为fixedCellWidth ,如果大于0 ,或者硬编码值为256 高度为fixedCellHeight乘以visibleRowCount ,如果fixedCellHeight大于0 ,否则它是硬编码的值16乘以visibleRowCount

        如果模型不为空,则宽度是首选大小的宽度,通常是最宽列表元素的宽度。 高度是单元格的高度,索引0乘以visibleRowCount ,加上列表的垂直插入。

        VERTICAL_WRAPHORIZONTAL_WRAP
        此方法只返回getPreferredSize的值。 该列表的ListUI预计将覆盖getPreferredSize以返回适当的值。

        Specified by:
        getPreferredScrollableViewportSize在界面 Scrollable
        结果
        包含显示 visibleRowCount行所需视口大小的维度
        另请参见:
        getPreferredScrollableViewportSize()setPrototypeCellValue(E)
      • getScrollableUnitIncrement

        public int getScrollableUnitIncrement​(Rectangle visibleRect,
                                              int orientation,
                                              int direction)
        返回滚动以显示下一行或上一行(用于垂直滚动)或列(用于水平滚动)的距离。

        对于水平滚动,如果布局方向为VERTICAL ,那么列表的字体大小被返回(或1如果字体为null )。

        Specified by:
        getScrollableUnitIncrement在界面 Scrollable
        参数
        visibleRect - 视口中可见的视图区域
        orientation - SwingConstants.HORIZONTALSwingConstants.VERTICAL
        direction - 向上/向后滚动小于或等于零,向下/向前大于零
        结果
        滚动指定方向的“单位”增量; 总是积极的
        异常
        IllegalArgumentException - 如果 visibleRectnull ,或 orientation不是 SwingConstants.VERTICAL或者 SwingConstants.HORIZONTAL
        另请参见:
        getScrollableBlockIncrement(java.awt.Rectangle, int, int)Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
      • getScrollableBlockIncrement

        public int getScrollableBlockIncrement​(Rectangle visibleRect,
                                               int orientation,
                                               int direction)
        返回滚动以显示下一个或上一个块的距离。

        对于垂直滚动,使用以下规则:

        • 如果向下滚动,则返回要滚动的距离,以便最后一个可见元素成为第一个完全可见的元素
        • 如果向上滚动,则返回滚动的距离,以便第一个可见元素成为最后一个完全可见的元素
        • 如果列表为空,则返回visibleRect.height

        对于水平滚动,当布局方向为VERTICAL_WRAPHORIZONTAL_WRAP

        • 如果向右滚动,则返回要滚动的距离,以便最后一个可见元素成为第一个完全可见的元素
        • 如果向左滚动,则返回要滚动的距离,以便第一个可见元素成为最后一个完全可见的元素
        • 如果列表为空,则返回visibleRect.width

        对于水平滚动和VERTICAL方向,返回visibleRect.width

        请注意, visibleRect的值必须等于this.getVisibleRect()

        Specified by:
        getScrollableBlockIncrement在接口 Scrollable
        参数
        visibleRect - 视口中可见的视图区域
        orientation - SwingConstants.HORIZONTALSwingConstants.VERTICAL
        direction - 向上/向后滚动小于或等于零,向下/向前大于零
        结果
        滚动指定方向的“块”增量; 总是积极的
        异常
        IllegalArgumentException - 如果 visibleRectnull ,或 orientation不是 SwingConstants.VERTICAL或者 SwingConstants.HORIZONTAL
        另请参见:
        getScrollableUnitIncrement(java.awt.Rectangle, int, int)Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
      • getScrollableTracksViewportWidth

        @BeanProperty(bound=false)
        public boolean getScrollableTracksViewportWidth()
        返回true如果此JList被显示在JViewport和视口比所述列表的优选宽度,或者如果布局方向为HORIZONTAL_WRAPvisibleRowCount <= 0 ; 否则返回false

        如果是false ,则不跟踪视口的宽度。 这允许水平滚动,如果JViewport本身嵌入到JScrollPane

        Specified by:
        getScrollableTracksViewportWidth在界面 Scrollable
        结果
        封闭视口是否应强制列表的宽度与其自身匹配
        另请参见:
        Scrollable.getScrollableTracksViewportWidth()
      • getScrollableTracksViewportHeight

        @BeanProperty(bound=false)
        public boolean getScrollableTracksViewportHeight()
        返回true如果此JList显示在JViewport和视口比列表的首选高度更高,或者布局方向为VERTICAL_WRAPvisibleRowCount <= 0 ; 否则返回false

        如果是false ,则不跟踪视口的高度。 这允许垂直滚动,如果JViewport本身嵌入到JScrollPane

        Specified by:
        getScrollableTracksViewportHeight在界面 Scrollable
        结果
        封闭视口是否应强制列表的高度与其自身匹配
        另请参见:
        Scrollable.getScrollableTracksViewportHeight()
      • paramString

        protected String paramString()
        返回此JListString表示。 此方法仅用于调试目的,返回的String的内容和格式可能因实现而异。 返回的String可能为空,但可能不是null
        重写:
        paramString在类 JComponent
        结果
        String表示 JList