java列表框(JList和JComboBox)使用

java列表框有JList和JCombox两种类型,使用的方法类似。

实现页面

java列表框(JList和JComboBox)使用_第1张图片

程序代码

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class List1 {
	JFrame jf=new JFrame("列表框测试");
	String[] books={"java", "android", "C++", "C", "C#", "HTML", "js"};
	JPanel layoutPanel=new JPanel();
	ButtonGroup layoutGroup=new ButtonGroup();
	JPanel selectModelPanel=new JPanel();
	ButtonGroup selectModeGroup=new ButtonGroup();

	JTextArea favorite=new JTextArea(4, 40);
	//JList和JComboBox方法类似
	JList bookList;
	JComboBox bookSelector;

	public void init(){
		//设置容器和组件的边框
		layoutPanel.setBorder(new TitledBorder(new EtchedBorder(), "确定选项布局"));
		selectModelPanel.setBorder(new TitledBorder(new EtchedBorder(), "确定选择模式"));
		favorite.setBorder(new EtchedBorder());
		//创建JList
		bookList=new JList<>(books);
		bookList.setVisibleRowCount(3);
		bookList.setSelectionInterval(1,2);
		//创建JComboBox
		bookSelector=new JComboBox<>(books);
		bookSelector.setEditable(true);
		bookSelector.setMaximumRowCount(4);
		bookSelector.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				Object selectedItem = bookSelector.getSelectedItem();
				if(selectedItem!=null){
					favorite.setText(selectedItem.toString());
				}
			}
		});
		//设置布局按钮
		addBtn2LayoutPanel("纵向滚动", JList.VERTICAL);
		addBtn2LayoutPanel("纵向换行", JList.VERTICAL_WRAP);
		addBtn2LayoutPanel("横向换行", JList.HORIZONTAL_WRAP);
		//设置选择按钮
		addBtn2SelectPanel("无限制", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		addBtn2SelectPanel("单选", ListSelectionModel.SINGLE_SELECTION);
		addBtn2SelectPanel("单范围", ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		//垂直布局容器
		Box leftVBox = Box.createVerticalBox();
		//使用JScrollPane,才会有滚动条
		leftVBox.add(new JScrollPane(bookList));
		leftVBox.add(layoutPanel);
		leftVBox.add(selectModelPanel);
		//JComboBox放在Panel中才会填满界面
		JPanel bookSelectorPanel = new JPanel();
		bookSelectorPanel.add(bookSelector);
		//顶部容器
		Box topBox = Box.createHorizontalBox();
		topBox.add(leftVBox);
		topBox.add(bookSelectorPanel);
		//底部容器
		JPanel bottomPanel = new JPanel();
		bottomPanel.setLayout(new BorderLayout());
		bottomPanel.add(new JLabel("你最喜欢的图书:"), BorderLayout.NORTH);
		bottomPanel.add(favorite);
		//组合在window中
		Box box = Box.createVerticalBox();
		box.add(topBox);
		box.add(bottomPanel);
		jf.add(box);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.pack();
		jf.setVisible(true);
	}

	//添加改变布局的按钮
	public void addBtn2LayoutPanel(String name, int layoutType){
		JRadioButton btn=new JRadioButton(name);
		layoutPanel.add(btn);
		if(layoutGroup.getButtonCount()==0){
			btn.setSelected(true);
		}
		layoutGroup.add(btn);
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				bookList.setLayoutOrientation(layoutType);
			}
		});
	}

	//添加改变选取的按钮
	public void addBtn2SelectPanel(String name, int selectType){
		JRadioButton btn=new JRadioButton(name);
		selectModelPanel.add(btn);
		if(selectModeGroup.getButtonCount()==0){
			btn.setSelected(true);
		}
		selectModeGroup.add(btn);
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				bookList.setSelectionMode(selectType);
			}
		});
	}

	//main()
	public static void main(String[] args) {
		new List1().init();
	}
}

 

你可能感兴趣的:(Java)