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
验证以下输出。