JList

优质
小牛编辑
137浏览
2023-12-01

介绍 (Introduction)

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

Class 声明 (Class Declaration)

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

public class JList
   extends JComponent
      implements Scrollable, Accessible

字段 (Field)

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

  • static int HORIZONTAL_WRAP - 表示“报纸样式”布局,单元格水平流动然后垂直流动。

  • static int VERTICAL - 表示单个列中单元格的垂直布局; 默认布局。

  • static int VERTICAL_WRAP - 表示“报纸样式”布局,其中单元格垂直然后水平流动。

类构造函数 (Class Constructors)

Sr.No.构造函数和描述
1

JList()

使用空的只读模型构造JList。

2

JList(ListModel dataModel)

构造一个JList,显示指定的非null模型中的元素。

3

JList(Object[] listData)

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

4

JList(Vector《?》 listData)

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

Class Methods

Sr.No.方法和描述
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)

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

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()

返回“原型”单元格值 - 用于计算单元格的固定宽度和高度的值。

27

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

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

28

boolean getScrollableTracksViewportHeight()

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

29

boolean getScrollableTracksViewportWidth()

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

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的String表示形式。

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属性,然后(如果新值为非null),通过从单元格渲染器请求给定值(和索引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设置为非null ListSelectionModel实现。

69

void setUI(ListUI ui)

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

70

void setValueIsAdjusting(boolean b)

设置选择模型的valueIsAdjusting属性。

71

void setVisibleRowCount(int visibleRowCount)

设置visibleRowCount属性,该属性具有不同的含义,具体取决于布局方向:对于VERTICAL布局方向,这将设置要显示的首选行数,而不需要滚动; 对于其他方向,它会影响细胞的包裹。

72

void updateUI()

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

方法继承 (Methods Inherited)

该类继承以下类中的方法 -

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

JList示例

使用您选择的任何编辑器创建以下Java程序,例如D:/ 》 SWING 》 com 》 xnip 》 gui 》

SwingControlDemo.java

package cn.xnip.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\xnip\gui\SwingControlDemo.java

如果没有错误发生,则表示编译成功。 使用以下命令运行该程序。

D:\SWING>java cn.xnip.gui.SwingControlDemo

验证以下输出。

Swing JList