Java Swing星座选择器界面的实现

时间:2019-01-19
本文章向大家介绍Java Swing星座选择器界面的实现,主要包括Java Swing星座选择器界面的实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

需要实现什么功能?

综合文本框、按钮下拉列表组件,实现一个星座选择器程序。程序允许用户在下拉列表中选择一个自己的星座,如果不在列表中还可以增加星座,也可以删除星座。


package cn.com.plane;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Choice {
/*author:命运的信徒
 * date:2019/1/18
 * arm:综合文本框和下拉列表和按钮,做一个星座选择器
 */
	static JLabel jl=new JLabel();
	static JLabel jll=new JLabel();
	static JList<Object> jlist;
	static  Object [] listData;
	static JTextField jtf;
	private static void setPage(){
		//1.设置窗体的标题和大小
		JFrame jf=new JFrame("星座选择器");
		jf.setPreferredSize(new Dimension(500, 500));
		//2.设置关闭窗体就是关闭程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置布局模式
		GridLayout glo=new GridLayout(4,1);
		jf.setLayout(glo);
		//主要的程序
		JPanel jp=new JPanel();
		jf.add(jp);	
		//1.下拉列表
		jlist=new JList<Object>();
		jlist.setPreferredSize(new Dimension(100, 500));
		listData=new Object[]{"白羊座","处女座","双鱼座","双子座","射手座","金牛座","天蝎座","摩羯座","巨蟹座"};
		jlist.setListData(listData);
		//为下拉列表添加监听事件
		jlist.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				//在一个文本框里面显示你的星座
				jl.setText("你的星座是:"+jlist.getSelectedValue());
			}
		});
		//十二星座选择器
		JLabel jls=new JLabel("十二星座选择器");
		//设置这个标签的大小
		jls.setPreferredSize(new Dimension(180, 30));
		//面板添加标签
		jp.add(jls);
		//设置字体
		jp.setFont(new Font("楷体", Font.BOLD, 24));
		jp.add(jlist);
		//面板2
		JPanel jp1=new JPanel();
		jf.add(jp1);
		jl.setPreferredSize(new Dimension(200,50));
		jp1.add(jl);
		//面板3、添加星座
		JPanel jp2=new JPanel();
		jf.add(jp2);
		//说明
		JLabel jl1=new JLabel("添加星座-");
		jp2.add(jl1);
		//输入框
		jtf=new JTextField();
		jtf.setColumns(5);
		jp2.add(jtf);
		jp2.add(jll);
		//焦点监视事件
		jtf.addFocusListener(new FocusListener() {
			
			@Override
			public void focusLost(FocusEvent e) {
				// TODO Auto-generated method stub
				jll.setText("输入完成/还没有输入....");
			}
			
			@Override
			public void focusGained(FocusEvent e) {
				// TODO Auto-generated method stub
				jll.setText("正在输入星座.....");
			}
		});
		//面板4,添加按钮以及按钮事件
		JPanel jp3=new JPanel();
		jf.add(jp3);
		JButton jb=new JButton("添加");
		jp3.add(jb);
		JButton jb1=new JButton("删除");
		jp3.add(jb1);
		//添加操作
		jb.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				//添加操作
				//1.获取数组的长度
				int len=listData.length;
				//2.定义一个新的数组,在原有的数组的基础上+1
				Object [] data=new Object[len+1];
				for (int i = 0; i < listData.length; i++) {
					data[i]=listData[i];							
				}
				//把文本框里面输入的值作为最后一位
				data[len]=jtf.getText();
				//然后更新JList的内容			
				jlist.setListData(data);
				listData=data;
			}
		});
		//删除操作
		jb1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//1.选择删除的
				//1.获取数组的长度
				int len=listData.length;
				//2.定义一个新的数组,在原有的数组的基础上+1
				Object [] data=new Object[len-1];
				int j=0;
				for (int i = 0; i < len-1; i++) {
					if(listData[i]==jlist.getSelectedValue()){
						//把这个标识出来
						j=1;
					}
					if(j==0){
						data[i]=listData[i];		
					}else{
						//if j==1的话,就进行替换
						data[i]=listData[i+1];					
					}
					
				}
				//然后更新JList的内容			
				jlist.setListData(data);
				listData=data;
				
			}
		});
		//3.设置可见
		jf.pack();
		jf.setVisible(true);
		
	}
	public static void main(String[] args) {
		setPage();
	}
}

效果如下

点击列表框的值的时候

新添加一个星座

输入框自带焦点事件、添加成功

删除星座