列表框组件

package swing;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class ListExample {
	public static void main(String[] args) {
		ListFrame frame=new ListFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}

class ListFrame extends JFrame{
	public static final int WIDTH=300;
	public static final int HEIGHT=250;
	public static final String checkedLabel="Yoou Choosed:\nindex,Course\n";
	private JTextArea myTextArea;	//文本域
	private JList courseList;	//列表框组件
	private JPanel listPanel;	//面板组件
	
	public ListFrame() {
		this.setTitle("列表框组件示例");//设置标题
		this.setSize(WIDTH,HEIGHT);//设置大小尺寸
		Container contentPane=this.getContentPane();//获得当前窗体面板容器
		JPanel textPanel=new JPanel();//实例化一个面板容器,用来放文本域
		myTextArea=new JTextArea(checkedLabel,5,20);//实例化文本域,文本域的文字是checkLable
		JScrollPane textScrollpane=new JScrollPane(myTextArea);//实例化一个滚动面板组件,并添加在文本域
		textPanel.add(textScrollpane);//将滚动面板添加到面板上
		contentPane.add(textPanel);//将面板添加到当前窗体的面板上
		listPanel=new JPanel();//实例化面板,用来放课程列表
		String [] courses={"Math","English","Physics","Chemic","Biology","Politics"};//定义一个课程数组
		courseList=new JList(courses);//实例化列表框,并将courses添加到列表框
		courseList.setVisibleRowCount(4);//设置不使用滚动条可以在列表中显示的首选行数
		courseList.addListSelectionListener(new courseListener());//为每次选择发生更改时要通知的列表添加侦听器
		JScrollPane ListScorllPane=new JScrollPane(courseList);//将列表放进滚动面板中
		listPanel.add(ListScorllPane);//将列表滚动面板放进面板中
		contentPane.add(listPanel,BorderLayout.SOUTH);//将面板放进窗体面板容器中,并指定放在南部区域,即底部
	}
	
	private class courseListener implements ListSelectionListener{

		@Override
		public void valueChanged(ListSelectionEvent e) {
			Object[] selectedCourse=courseList.getSelectedValues();// 返回所选单元的一组值
			int [] selectedIndexCourse=courseList.getSelectedIndices();// 返回所选的全部索引的数组
																		//(按升序排列)。
			StringBuffer tempSelectedText=new StringBuffer(checkedLabel);//构造一个字符串缓冲区,
																	//并将其内容初始化为指定的字符串内容
			for(int i=0;i<selectedCourse.length;i++){
				String str1=new String(selectedIndexCourse[i]+",");
				String str2=(String)selectedCourse[i];
				tempSelectedText.append(str1);
				tempSelectedText.append(str2);
				tempSelectedText.append("\n");
				myTextArea.setText(tempSelectedText.toString());
			}
		}
		
	}
		
}

执行图片:

列表框组件_第1张图片

你可能感兴趣的:(列表框组件)