用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

JList和JComboBox简单应用

2018-03-13 作者:五只脚的鱼举报

[java]代码库

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.List;
import javax.swing.JList;
import javax.swing.border.*;
import java.util.Vector;

//JFrame(窗口)<JMenuBar(菜单条)<JMenu(菜单)<JMenuItem(菜单里的项目)
//JFrame(窗口)<JScrollPane(滚动条)<JTextArea(文件编辑面板)<JPopupMenu(右键菜单)
//JFrame(窗口)<JScrollPane(滚动条)<JLabel(标签)
//JFrame(窗口)<JPanel(板面)<JTextField(文件编辑条)
//JFrame(窗口)<JPanel(板面)<JButton(按钮)
//JFrame(窗口)<JPanel(板面)<JRadioButton(单选按钮,用ButtonGroup组合)
//JFrame(窗口)<JPanel(板面)<JCheckBox(复选框)
//JFrame(窗口)<JPanel(板面)<JComboBox(下拉选择框)
//JFrame(窗口)<Box(布局管理器)

public class ListTest
{
	private JFrame mainWin = new JFrame("测试列表框");
	String[]  books = new String[]{"轻量级Java EE企业级应用实战",
			"疯狂Java讲义","疯狂Ajax讲义","疯狂Android讲义",
		"经典Java EE企业级应用实战"};
	//用一个 字符串数组来创建一个JList对象
	JList<String> bookList = new JList<>(books);//----------------------这样加一打开就能看见
	JComboBox<String> bookSelector ;
	//定义布局选择按钮所在的面板
	JPanel layoutPanel = new JPanel();
	ButtonGroup layoutGroup = new ButtonGroup();
	//定义选择模式按钮所在面板
	JPanel selectModePanel = new JPanel();
	ButtonGroup selectModeGroup = new ButtonGroup();
	JTextArea favoriate = new JTextArea(4,40);

	public void init(){
	
		//设置JList的可视高度可同时显示3个列表项
		bookList.setVisibleRowCount(3);
		//默认选中第三项和第五项(第一项的索引是0)
		bookList.setSelectionInterval(2,4);
		addLayoutButton("纵向滚动",JList.VERTICAL);
		addLayoutButton("纵向换行",JList.VERTICAL_WRAP);
		addLayoutButton("横向换行",JList.VERTICAL_WRAP);
		addSelectModelButton("无限制",ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		addSelectModelButton("单选",ListSelectionModel.SINGLE_SELECTION);
		addSelectModelButton("单范围",ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		Box listBox = new Box(BoxLayout.Y_AXIS);//-----------------------------------------小Box垂直排列
		//将JList组件放在JScrollPane中,再将该JScrollPane添加到ListBox容器中
		listBox.add(new JScrollPane(bookList));
		//添加布局选择按钮面板,选择模式按钮面板。
		//上面6个都通过下面的两个方法,加到了layoutPanel、selectModePanel中
		//于是layoutPanel、selectModePanel再加到Box中
		listBox.add(layoutPanel);//------------------------------------------有顺序,先加的就在上面
		listBox.add(selectModePanel);
		
		//为JList添加事件监听器
		bookList.addListSelectionListener(new ListSelectionListener(){//--JList的事件监听器addListSelectionListener
			public void valueChanged(ListSelectionEvent e){
				//获取用户所选择的所有图书
				List<String> books = bookList.getSelectedValuesList();
				favoriate.setText("");//清空
				for(String book : books){
					favoriate.append(book+"\n");//显示在编辑板上
				}
			}
		});
		Vector<String> bookCollection = new Vector<>();//-------------------------Vector在右边JComboBox中
		bookCollection.add("轻量级Java EE企业级应用实战");
		bookCollection.add("疯狂Java讲义");
		bookCollection.add("疯狂Ajax讲义");
		bookCollection.add("疯狂Android讲义");
		bookCollection.add("经典Java EE企业级应用实战");
		//用一个Vector对象来创建一个JComboBox对象
		bookSelector = new JComboBox<>(bookCollection);//-------------------------Vector在右边JComboBox中

		//为JComboBox添加事件监听器
		bookSelector.addItemListener(new ItemListener(){//-------------JComboBox的事件监听器addItemListener
			public void itemStateChanged(ItemEvent e){
				//获取JComboBox所选中的项
				Object book = bookSelector.getSelectedItem();
				favoriate.setText(book.toString());//显示在编辑板上
			}
		});
		//设置可以直接编辑
		bookSelector.setEditable(true);
		//设置下拉列表框的可视高度可同时显示4个列表项
		bookSelector.setMaximumRowCount(4);
		
		JPanel p = new JPanel();//2个Box,3个JPanel。一个小Box加了2个JPanel,大Box加了小Box和1个JPanel
		p.add(bookSelector);

		Box box = new Box(BoxLayout.X_AXIS);//---------------------------------大Box水平排列

		box.add(listBox);//-----------------------------------Box加入Box中,大Box水平排列,小Box垂直排列

		box.add(p);
		mainWin.add(box);

		JPanel favoriatePanel = new JPanel();//----------------第4个JPanel加了JTextArea,后直接加到窗口中
		favoriatePanel.setLayout(new BorderLayout());//这里布局是因为下面加了两个组件,JTextArea和JLabel
		favoriatePanel.add(new JScrollPane(favoriate));//默认中间
		favoriatePanel.add(new JLabel("您喜欢的图书"),BorderLayout.NORTH);//位置是北上

		mainWin.add(favoriatePanel,BorderLayout.SOUTH);
		mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWin.pack();
		mainWin.setVisible(true);
	}
	private void addLayoutButton(String label,final int orientation){
		layoutPanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选项布局"));
		JRadioButton button = new JRadioButton(label);
		//把该单选按钮添加到layoutPanel面板中
		layoutPanel.add(button);
		//默认选中第一个按钮
		if(layoutGroup.getButtonCount() == 0){
			button.setSelected(true);
		}
		layoutGroup.add(button);
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				//改变列表框里列表项 的布局方向
				bookList.setLayoutOrientation(orientation);
			}
		});
	}
	private void addSelectModelButton(String label,final int selectModel){
		selectModePanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选择模式"));
		JRadioButton button = new JRadioButton(label);
		//把该单选按钮添加到selectModePanel面板中
		selectModePanel.add(button);
		//默认选中第一个按钮
		if(selectModeGroup.getButtonCount() == 0){
			button.setSelected(true);
		}
		selectModeGroup.add(button);//----------------------------单选按钮不加到ButtonGroup里就不是单选的了
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				//改变列表框里列表项选择模式
				bookList.setSelectionMode(selectModel);
			}
		});
	}
	public static void main(String[] args){
		new ListTest().init();
	}
}

[代码运行效果截图]


JList和JComboBox简单应用


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。