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,顯示指定的非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);
   }
}

執行上面示例代碼,得到以下結果:


上一篇: Swing控件 下一篇: Swing事件處理