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();
}
}
效果如下
点击列表框的值的时候
新添加一个星座
输入框自带焦点事件、添加成功
’
删除星座
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 手撕distributed ram类型同步FIFO
- 解决PIL透明的图片放在新图片上报错
- Dissonance 使用(一)
- Dissonance 使用(三)
- 从代码角度看各类子域名收集工具
- Shiro-550 PoC 编写日记
- k8s代码走读---client-go编程交互基础
- 故障恢复:一次底层超融合故障导致的异常处理
- JavaSE语法
- 链表:听说过两天反转链表又写不出来了?
- 汇总:MySQL 8.0 运维便捷命令
- 链表:一道题目考察了常见的五个操作!
- 性能测试必备知识(11)- 怎么理解内存中的Buffer和Cache?
- 神经网络-感知器(二):Python代码实现
- Kylin、Druid、ClickHouse 核心技术对比