java:下拉列表框组件

一、关键代码

一)、创建单个下拉列表框的内容(项)

  1. 可以先创建下拉列表框,然后不断的一个个添加内容元素,注意泛型的使用,泛型这里选择字符串(String)。
  2. 单个创建下拉下拉列表框的内容元素,可以创建多个,下方源码只创建一个(“PC120挖机”)。
  3. 需要注意在源码前面添加下拉列表框的包类。import javax.swing.JComboBox;// 下拉框列表
		// combo(连击),String<字符串>
		JComboBox<String> comboBox_1=new JComboBox<>();
		comboBox_1.addItem("PC120挖机");// 下拉框列表添加内容。Item(条款,项)

二)、字符串数组添加多个下拉列表框的内容(项)

  • 也可以先创建字符串数组,数组里添加多个内容(项),然后将这个字符串数组的数据添加到下拉列表框中。
		String items_1[]={"54m天泵","56m天泵","62m天泵"};// 建立数组
		JComboBox<String> comboBox_1=new JComboBox<>(items_1);// 使用数组String添加下拉元素

三)、模型方法给下拉列表框添加内容(项)

  1. 需要注意泛型的添加,不加有些JDK版本报错。源码本身无问题,但会因版本的兼容性问题报错。
  2. 模型方法注意添加模型相关的包类。
    import javax.swing.ComboBoxModel;// 下拉框列表模型
    import javax.swing.DefaultComboBoxModel;// 默认下拉框列表模型
  3. 模型方法的好处之一是当要在原来内容的基础上,继续加某一项内容(项)时,编写相关插入的相关代码便可。如:
    model_1.addElement(tmp);// 向数组模型添加元素 Element(元素)
    注意: 上行一行代码,这里只做说明使用,本文源码未使用。
		JComboBox<String> comboBox_1=new JComboBox<>();// 新建下拉框列表
		String items_1[]={"小户型","大户型","工区"};
		// 下行不加<String>会因版本问题报错
		ComboBoxModel<String> cm_1=new DefaultComboBoxModel<>(items_1);// 创建下拉框列表模型
		comboBox_1.setModel(cm_1);// 向列表中添加模型

二、简单说明

  • 大致流程说明。大致的流程也可观看流程图得知。先创建窗体f和容器c,将容器嵌入窗体中。设置窗体点击×即关闭程序,窗体可见,初始不设置布局。以上主要为way1的相关源码。然后创建一个下拉列表框,并给下拉列表框添加内容(元素)。添加内容有三种方法,源码看way2、way3、way4部分,分别为三种添加内容(项、元素)的方法。
  • way2的源码流程,先创建下拉列表框,然后逐个添加内容元素,最后再以动作监听,输出信息框的方式展示运行效果。
  • way3的源码流程,先创建字符串数组,数组中编辑好内容元素,然后将字符串数组添加到下拉列表框中,最后和way2一样以信息框展示运行效果。
  • way4的源码流程,创建下拉列表框,创建数组,将数组引入模型中,将模型添加到下拉列表框中。然后添加事件监听,通过输入信息框的方式展示运行效果。模型个泛型需要设置好,因为有的JDK版本会提示因编译的安全问题报错而无法编译。
  • Main一类。创建Demo类,功能的组合,如way1接way2,或者way1接way3。本文直接创建3个way1的窗体。

三、流程图

窗体
容器
初始不设置布局
下拉列表框
添加元素方法way2
添加元素方法way3
添加元素方法way4
分别创建多个元素
设置可编辑
动作监听弹出信息框
字符串数组创建元素
设置不可编辑
动作监听弹出信息框
模型方法创建元素
动作监听弹出信息框

四、源码

一)、源码A

  • 窗体里添加一个下拉列表框,和一个按钮。点击按钮弹出信息框,信息框的内容:索引和选择的内容。给下拉列表框里添加元素,代码有三种方法来实现。这里分别用方法way2、way3、way4(way1为窗体的属性)。本文源码是选择直接编译成三个窗体,各显示三个方法的效果。毕竟注释后一个个分别编译后的效果对比性较差,直接在桌面共同生成三个方法各自的效果对比性更好。
  • 注意:编译后三个窗体,是重合的,分别拉开分析便可。
/*	【程序思想】
*	下拉列表框组件
*/

import java.awt.Container;// 容器

import java.awt.event.ActionListener;// 动作监听
import java.awt.event.ActionEvent;// 动作事件

import javax.swing.JFrame;// 窗体
import javax.swing.JComboBox;// 下拉框列表
import javax.swing.ComboBoxModel;// 下拉框列表模型
import javax.swing.DefaultComboBoxModel;// 默认下拉框列表模型
import javax.swing.JButton;// 按钮
import javax.swing.JOptionPane;// 选择 窗格

class Demo{
	JFrame f=new JFrame();// 窗体
	Container c;// 容器

	/*
		way1
		窗体的基本属性
	*/
	void way1(){
		f.setBounds(400,200,500,400);// 位置、尺寸
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点×即关闭
		c=f.getContentPane();// 容器c嵌入窗体
		c.setLayout(null);// 初始容器c不设置布局
	}

	/*
		way2
		下拉框列表属性的设置,方法一
	*/
	void way2(){
		
		// combo(连击),String<字符串>
		JComboBox<String> comboBox_1=new JComboBox<>();
		comboBox_1.addItem("PC120挖机");// 下拉框列表添加内容。Item(条款)
		comboBox_1.addItem("YC60挖机");// 下拉框列表添加内容。Item(条款)
		comboBox_1.addItem("PC220炮机");// 下拉框列表添加内容。Item(项,项目)
		
		comboBox_1.setBounds(15,10,100,20);// 下拉框的坐标、尺寸。绝对布局
		c.add(comboBox_1);

		comboBox_1.setEditable(true);// 列表框可编辑

		JButton btn_1=new JButton("按钮way2");
		// Action(动作),performed(执行),Message(信息),dialog(对话框),selected(挑选),index(指数)
		btn_1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JOptionPane.showMessageDialog(f,
					"选择的索引:"+comboBox_1.getSelectedIndex()+"\n"+
					"选择的内容为:"+comboBox_1.getSelectedItem()
				);
				
			}

		});
		btn_1.setBounds(120,20,110,40);// 按钮的坐标、尺寸
		c.add(btn_1);
	}

	/*
		way3
		下拉框列表的属性设置,方法二
	*/
	void way3(){
		String items_1[]={"54m天泵","56m天泵","62m天泵"};// 建立数组
		JComboBox<String> comboBox_1=new JComboBox<>(items_1);// 使用数组String添加下拉元素

		comboBox_1.setBounds(20,15,90,30);// 下拉框列表的位置、尺寸
		c.add(comboBox_1);

		comboBox_1.setEditable(false);// 列表框不可编辑

		JButton btn_1=new JButton("按钮way3");
		// Action(动作),performed(执行),Message(信息),dialog(对话框),selected(挑选),index(指数)
		btn_1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JOptionPane.showMessageDialog(f,
					"选择的索引:"+comboBox_1.getSelectedIndex()+"\n"+
					"选择的内容为:"+comboBox_1.getSelectedItem()
				
				);
				
			}

		});
		btn_1.setBounds(120,20,110,40);// 按钮的坐标、尺寸
		c.add(btn_1);
	}

	/*
		way4
		下拉框的属性,方法三
		模型方法
	*/
	void way4(){
		// <泛型:字符串>
		JComboBox<String> comboBox_1=new JComboBox<>();// 新建下拉框列表
		String items_1[]={"小户型","大户型","工区"};
		// 下行不加<String>会因版本问题报错
		ComboBoxModel<String> cm_1=new DefaultComboBoxModel<>(items_1);// 创建下拉框列表模型
		comboBox_1.setModel(cm_1);// 向下拉列表中添加模型

		comboBox_1.setBounds(20,18,90,25);// 下拉框列表坐标、大小
		c.add(comboBox_1);

		JButton btn_1=new JButton("按钮way4");
		// Action(动作),performed(执行),Message(信息),dialog(对话框),selected(挑选),index(索引)
		btn_1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JOptionPane.showMessageDialog(f,
					"选择的索引:"+comboBox_1.getSelectedIndex()+"\n"+
					"选择的内容为:"+comboBox_1.getSelectedItem()
				);
				
			}

		});
		btn_1.setBounds(120,20,110,40);// 按钮的坐标、尺寸
		c.add(btn_1);
	}

	public static void main(String[] args) {
		Demo d=new Demo();
		d.way1();// 窗体a属性
		d.way2();// 下拉框列表的属性,编写方式1

		Demo d_2=new Demo();
		d_2.way1();// 再新建一个窗体b
		d_2.way3();// 下拉框列表的属性,编写方式2

		Demo d_3=new Demo();
		d_3.way1();// 新建窗体c
		d_3.way4();// 下拉框列表的属性,编写方式3,模型
		
		d.f.setVisible(true);// 窗体可见
		d_2.f.setVisible(true);
		d_3.f.setVisible(true);
	}
}

二)、源码A的运行效果

1.默认编译效果

(1)、默认的编译效果,三个窗体因方法way1设置的坐标大小相同,所以在同一位置。如下图。我们分别拉开展示就好。
在这里插入图片描述
(2)、拉开最前面的两个窗体,让三个窗体在同一桌面平面展示。如下:
在这里插入图片描述

2.方法way2的窗体

(1)、点击“按钮way2”,效果如下:
在这里插入图片描述
(2)、 “按钮way2”窗体的下拉列表框是可以编辑的,源码A中有相关的代码。这里我们编辑“推土机”后点击“按钮way2”,效果如下:
在这里插入图片描述

3.方法way3的窗体

(1)、选择下拉列表框中的“62m天泵”,如下:
在这里插入图片描述
(2)、点击“按钮way3”,效果如下:
在这里插入图片描述

4.方法way4的窗体

(1)、选择下拉列表框中的“大户型”,如下:

  • 注意:way4使用模型方法添加元素。
    在这里插入图片描述
    (2)、点击“按钮way04”的效果如下:
    在这里插入图片描述

五、结语

模型方法不设置好或不设泛型的话,有时候编译报错,作者的JDK版本便无法编译,不是常见的缺什么内容或类相关的报错,而是大致意思是说这个方法不安全不给你编译的报错。但有的版本不设置泛型便可编译运行。对于窗体的运行效果,想着一个个编译截图上传太麻烦,便选择生成三个方法下不同编译效果的窗体,这样对比也比较直观。其实这里“比较”的方向意思是三个方法都可以达成相同的效果,而不是各窗体的这个和哪个看起来怎么怎么样的不同。编译直观不同的地方是各方法里又另外添加了些功能代码,如:way2窗体的下拉列表框可编辑,way3窗体的下拉列表框不可编辑。但根本上元素类下拉选择的效果各方法却是一样的。

六、定位日期

2022.4.19;23:25 流程图、源码、源码运行效果的内容
2022.4.20;23:30

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值