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);
}
}
執行上面示例代碼,得到以下結果: