JList
介绍 (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
验证以下输出。