SWING - JList 类

简介

JList 类是一个显示对象列表并允许用户选择一个或多个项目的组件。 一个单独的模型 ListModel 维护列表的内容。


类声明

以下是 javax.swing.JList 类的声明 −

public class JList
   extends JComponent
      implements Scrollable, Accessible

字段

以下是 javax.swing.JList 类的字段 −

  • static int HORIZONTAL_WRAP − 表示"报纸样式"布局,其中单元格先水平然后垂直。

  • static int VERTICAL − 表示单元格的垂直布局,单列中的默认布局。

  • static int VERTICAL_WRAP − 表示"报纸样式"布局,其中单元格先垂直然后水平。


类构造函数

序号 构造函数 & 描述
1

JList()

构造一个具有空的只读模型的 JList。

2

JList(ListModel dataModel)

构造一个显示来自指定非空模型的元素的 JList。

3

JList(Object[] listData)

构造一个显示指定数组中元素的 JList。

4

JList(Vector<?> listData)

构造一个显示指定 Vector 中元素的 JList。


类方法

序号 方法 & 描述
1

void addListSelectionListener(ListSelectionListener listener)

将监听器添加到列表中,每次选择发生更改时都会收到通知; 监听选择状态变化的首选方式。

2

void addSelectionInterval(int anchor, int lead)

将选择设置为指定间隔与当前选择的并集。

3

void clearSelection()

清除选择; 调用此方法后,isSelectionEmpty 将返回 true。

4

protected ListSelectionModel createSelectionModel()

返回 DefaultListSelectionModel 的实例; 在构造期间调用以初始化列表的选择模型属性。

5

void ensureIndexIsVisible(int index)

在封闭的视口中滚动列表以使指定的单元格完全可见。

6

protected void fireSelectionValueChanged(int firstIndex, int lastIndex, boolean isAdjusting)

通知直接添加到对选择模型所做的选择更改列表的 ListSelectionListener。

7

AccessibleContext getAccessibleContext()

获取与此 JList 关联的 AccessibleContext。

8

int getAnchorSelectionIndex()

返回锚选择索引。

9

Rectangle getCellBounds(int index0, int index1)

返回列表坐标系中由两个索引指定的单元格范围的边界矩形。

10

ListCellRenderer getCellRenderer()

返回负责绘制列表项的对象。

11

boolean getDragEnabled()

返回是否启用自动拖动处理。

12

JList.DropLocation getDropLocation()

返回在对组件执行 DnD 操作期间此组件应直观地指示为放置位置的位置,如果当前不显示任何位置,则返回 null。

13

DropMode getDropMode()

返回此组件的放置模式。

14

int getFirstVisibleIndex()

返回当前可见的最小列表索引。

15

int getFixedCellHeight()

返回 fixedCellHeight 属性的值。

16

int getFixedCellWidth()

返回 fixedCellWidth 属性的值。

17

int getLastVisibleIndex()

返回当前可见的最大列表索引。

18

int getLayoutOrientation()

返回列表的布局方向属性: VERTICAL 如果布局是单列单元格, VERTICAL_WRAP 如果布局是"报纸风格",内容垂直然后水平,或 HORIZONTAL_WRAP 如果布局是"报纸风格",内容 水平流动然后垂直。

19

int getLeadSelectionIndex()

返回潜在客户选择索引。

20

ListSelectionListener[] getListSelectionListeners()

返回通过 addListSelectionListener 添加到此 JList 的所有 ListSelectionListener 的数组。

21

int getMaxSelectionIndex()

返回最大的选定单元格索引,如果选择为空,则返回 -1。

22

int getMinSelectionIndex()

返回最小的选定单元格索引,如果选择为空,则返回 -1。

23

ListModel getModel()

返回保存由 JList 组件显示的项目列表的数据模型。

24

int getNextMatch(String prefix, int startIndex, Position.Bias bias)

返回其 toString 值以给定前缀开头的下一个列表元素。

25

Dimension getPreferredScrollableViewportSize()

计算显示 visibleRowCount 行所需的视口大小。

26

Object getPrototypeCellValue()

返回"prototypical"原型单元格值——用于计算单元格的固定宽度和高度的值。

27

int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)

返回滚动以显示下一个或上一个块的距离。

28

boolean getScrollableTracksViewportHeight()

如果此 JList 显示在 JViewport 中并且视口高于列表的首选高度,或者布局方向为 VERTICAL_WRAP 且 visibleRowCount <= 0; 否则返回 false,则返回 true。

29

boolean getScrollableTracksViewportWidth()

如果此 JList 显示在 JViewport 中并且视口比列表的首选宽度宽,或者如果布局方向是 HORIZONTAL_WRAP 并且 visibleRowCount <= 0; 否则返回 false,则返回 true。

30

int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)

返回滚动距离以显示下一行或上一行(用于垂直滚动)或列(用于水平滚动)。

31

int getSelectedIndex()

返回最小的选定单元格索引; 仅在列表中选择单个项目时的选择。

32

int[] getSelectedIndices()

按升序返回所有选定索引的数组。

33

Object getSelectedValue()

返回最小选定单元格索引的值; 仅在列表中选择单个项目时的选定值。

34

Object[] getSelectedValues()

返回所有选定值的数组,根据它们在列表中的索引按升序排列。

35

Color getSelectionBackground()

返回用于绘制所选项目背景的颜色。

36

Color getSelectionForeground()

返回用于绘制所选项目前景的颜色。

37

int getSelectionMode()

返回列表的当前选择模式。

38

ListSelectionModel getSelectionModel()

返回当前的选择模型。

39

String getToolTipText(MouseEvent event)

返回用于给定事件的工具提示文本。

40

ListUI getUI()

返回 ListUI,即呈现此组件的外观对象。

41

String getUIClassID()

返回"ListUI",即 UIDefaults 键,用于查找定义此组件外观的 javax.swing.plaf.ListUI 类的名称。

42

boolean getValueIsAdjusting()

返回选择模型的 isAdjusting 属性的值。

43

int getVisibleRowCount()

返回 visibleRowCount 属性的值。

44

Point indexToLocation(int index)

返回列表坐标系中指定项的原点。

45

boolean isSelectedIndex(int index)

如果选择了指定的索引,则返回 true,否则返回 false。

46

boolean isSelectionEmpty()

如果未选择任何内容,则返回 true,否则返回 false。

47

int locationToIndex(Point location)

返回列表坐标系中最接近给定位置的单元格索引。

48

protected String paramString()

返回此 JList 的字符串表示形式。

49

void removeListSelectionListener(ListSelectionListener listener)

从列表中删除选择侦听器。

50

void removeSelectionInterval(int index0, int index1)

将选择设置为指定间隔和当前选择的差集。

51

void setCellRenderer(ListCellRenderer cellRenderer)

设置用于绘制列表中每个单元格的委托。

52

void setDragEnabled(boolean b)

打开或关闭自动拖动处理。

53

void setDropMode(DropMode dropMode)

设置此组件的放置模式。

54

void setFixedCellHeight(int height)

为列表中每个单元格的高度设置一个固定值。

55

void setFixedCellWidth(int width)

为列表中每个单元格的宽度设置一个固定值。

56

void setLayoutOrientation(int layoutOrientation)

定义列表单元格的布局方式。

57

void setListData(Object[] listData)

从对象数组构造一个只读 ListModel,并使用该模型调用 setModel。

58

void setListData(Vector<?> listData)

从 Vector 构造一个只读 ListModel 并使用此模型调用 setModel。

59

void setModel(ListModel model)

设置表示列表内容或"值"的模型,通知属性更改侦听器,然后清除列表的选择。

60

void setPrototypeCellValue(Object prototypeCellValue)

设置prototypeCellValue 属性,然后(如果新值非空)通过从单元格渲染器请求单元格渲染器组件的给定值(和索引0)并使用该组件的首选大小来计算fixedCellWidth 和fixedCellHeight 属性 .

61

void setSelectedIndex(int index)

选择单个单元格。

62

void setSelectedIndices(int[] indices)

将选择更改为给定数组指定的索引集。

63

void setSelectedValue(Object anObject, boolean shouldScroll)

从列表中选择指定的对象。

64

void setSelectionBackground(Color selectionBackground)

设置用于绘制所选项目背景的颜色,单元格渲染器可以使用该颜色填充所选单元格。

65

void setSelectionForeground(Color selectionForeground)

设置用于绘制所选项目前景的颜色,单元格渲染器可以使用该颜色来渲染文本和图形。

66

void setSelectionInterval(int anchor, int lead)

选择指定的间隔。

67

void setSelectionMode(int selectionMode)

设置列表的选择模式。

68

void setSelectionModel(ListSelectionModel selectionModel)

将列表的 selectionModel 设置为非空 ListSelectionModel 实现。

69

void setUI(ListUI ui)

设置 ListUI,即呈现此组件的外观对象。

70

void setValueIsAdjusting(boolean b)

设置选择模型的 valueIsAdjusting 属性。

71

void setVisibleRowCount(int visibleRowCount)

设置 visibleRowCount 属性,根据布局方向有不同的含义: 对于其他方向,它会影响单元格的包裹。

72

void updateUI()

通过将 ListUI 属性设置为当前外观提供的值来重置它。


继承的方法

这个类继承了以下类的方法 −

  • javax.swing.JComponent
  • java.awt.Container
  • java.awt.Component
  • java.lang.Object

JList 示例

D:/ > SWING > com > tutorialspoint > gui > 中使用您选择的任何编辑器创建以下 Java 程序

SwingControlDemo.java

package com.tutorialspoint.gui;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class SwingControlDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;
   
   public SwingControlDemo(){
      prepareGUI();
   }
   public static void main(String[] args){
      SwingControlDemo  swingControlDemo = new SwingControlDemo();      
      swingControlDemo.showListDemo();
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java Swing Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new JLabel("", JLabel.CENTER);        
      statusLabel = new JLabel("",JLabel.CENTER);    
      statusLabel.setSize(350,100);

      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }
   private void showListDemo(){                                       
      headerLabel.setText("Control in action: JList"); 
      final DefaultListModel fruitsName = new DefaultListModel();

      fruitsName.addElement("Apple");
      fruitsName.addElement("Grapes");
      fruitsName.addElement("Mango");
      fruitsName.addElement("Peer");

      final JList fruitList = new JList(fruitsName);
      fruitList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      fruitList.setSelectedIndex(0);
      fruitList.setVisibleRowCount(3);        

      JScrollPane fruitListScrollPane = new JScrollPane(fruitList);    
      final DefaultListModel vegName = new DefaultListModel();

      vegName.addElement("Lady Finger");
      vegName.addElement("Onion");
      vegName.addElement("Potato");
      vegName.addElement("Tomato");

      final JList vegList = new JList(vegName);
      vegList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
      vegList.setSelectedIndex(0);
      vegList.setVisibleRowCount(3);        

      JScrollPane vegListScrollPane = new JScrollPane(vegList);       
      JButton showButton = new JButton("Show");

      showButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) { 
            String data = "";
            if (fruitList.getSelectedIndex() != -1) {                     
               data = "Fruits Selected: " + fruitList.getSelectedValue(); 
               statusLabel.setText(data);
            }
            if(vegList.getSelectedIndex() != -1){
               data += " Vegetables selected: ";
               for(Object vegetable:vegList.getSelectedValues()){
                  data += vegetable + " ";
               }
            }
            statusLabel.setText(data);
         }
      }); 
      controlPanel.add(fruitListScrollPane);    
      controlPanel.add(vegListScrollPane);    
      controlPanel.add(showButton);    
	  
      mainFrame.setVisible(true);             
   }
}

使用命令提示符编译程序。 转到 D:/ > SWING 并键入以下命令。

D:\SWING>javac com\tutorialspoint\gui\SwingControlDemo.java

如果没有报错,说明编译成功。 使用以下命令运行程序。

D:\SWING>java com.tutorialspoint.gui.SwingControlDemo

验证以下输出。

Swing JList

❮ SWING 控件