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事件处理