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 ,显示指定的非null 模型中的元素。 |
3 | JList(Object[] listData) |
构造一个显示指定数组中元素的JList 。 |
4 | JList(Vector<?> listData) |
构造一个显示指定Vector 中元素的JList 。 |
类方法
下面是Swing JList类中的方法列表。
JList示例
使用编辑器创建以下Java程序:JListExample.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JListExample {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public JListExample(){
prepareGUI();
}
public static void main(String[] args){
JListExample swingControlDemo = new JListExample();
swingControlDemo.showListDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java Swing JList 示例");
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("Java");
fruitsName.addElement("Go");
fruitsName.addElement("MySQL");
fruitsName.addElement("Python");
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);
}
}
执行上面示例代码,得到以下结果: