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)

通知直接添加到列表的选择模型中进行的选择更改的 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()

返回此组件在组件上进行拖放操作期间应以视觉方式指示为放置位置的位置,如果当前不应显示任何位置,则返回 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 的所有 ListSelectionListeners 的数组。

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;否则返回 false。

29

boolean getScrollableTracksViewportWidth()

如果此 JList 显示在 JViewport 中并且视口的宽度高于列表的首选宽度,或者布局方向为 HORIZONTAL_WRAP 且 visibleRowCount <= 0,则返回 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,即呈现此组件的 Look and Feel 对象。

41

String getUIClassID()

返回“ListUI”,即用于查找定义此组件外观和感觉的 javax.swing.plaf.ListUI 类的名称的 UIDefaults 密钥。

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,即呈现此组件的 Look and Feel 对象。

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 示例

使用您选择的任何编辑器创建以下 Java 程序,例如在 **D:/ > SWING > com > tutorialspoint > gui >** 文件夹下。

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_controls.htm
广告