16.下拉框

效果:

 

package com.lvshitech.gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListDemo extends JFrame {
	private JList jl;
	private JTextField valueField;
	
	public JListDemo() {
		super("一个简单的JList");
		
		Container container = getContentPane();
		
		String []entries = {"北京", "天津", "上海", "重庆", "武汉"};
		jl = new JList(entries);	// 创建JList对象,需要数组
		jl.setVisibleRowCount(4);	// 设置JList显示的行数
		Font displayFont = new Font("Serif", Font.BOLD, 18);
		jl.setFont(displayFont);
		jl.addListSelectionListener(new ValueReporter());	// 下拉框触发事件监听
		
		// 下拉框面板
		JPanel listPanel = new JPanel();
		listPanel.setBackground(Color.white);
		Border listPanelBorder = BorderFactory.createTitledBorder("JList数据");
		listPanel.setBorder(listPanelBorder);
		
		JScrollPane listPane = new JScrollPane(jl);
		listPanel.add(listPane);
		
		// 已选择的面板
		JPanel valuePanel = new JPanel();
		valuePanel.setBackground(Color.white);
		Border valuePanelBorder = BorderFactory.createTitledBorder("JList选择");
		valuePanel.setBorder(valuePanelBorder);
		
		// 已选择的标签和文本框
		JLabel valueLabel = new JLabel("已选择:");
		valueField = new JTextField("", 6);
		valueField.setFont(displayFont);
		valuePanel.add(valueLabel);
		valuePanel.add(valueField);
		valuePanel.setBackground(Color.white);
		valueLabel.setFont(displayFont);
		
		// 添加到容器
		container.add(listPanel, BorderLayout.CENTER);
		container.add(valuePanel, BorderLayout.SOUTH);
		
		// 样式设置
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new JListDemo();
	}
	
	// 下拉框事件监听接口实现
	private class ValueReporter implements ListSelectionListener {
		@Override
		public void valueChanged(ListSelectionEvent e) {
			if (!e.getValueIsAdjusting()) {		// 当下拉框中的内容改变时触发
				valueField.setText(jl.getSelectedValue().toString());
			}
		}
	}
}

 

posted @ 2018-01-16 12:46  半生戎马,共话桑麻、  阅读(112)  评论(0)    收藏  举报
levels of contents