Java里Swing的列表框练习代码(6)

下拉框(JComboBox

  • 代码部分
package top.linksinke.test;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

/**
 * JComboBox 下拉框的使用<br/>
 * create by LINKSINKE on 2020/2/29
 */
public class JComboBoxTest extends JFrame {
	public JComboBoxTest() {
		// 设置close按钮的操作(关闭窗口并停止程序运行)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗口默认打开的位置和大小
		this.setBounds(20, 20, 300, 200);
		// 获取容器对象
		Container ctainer = this.getContentPane();
		// 布局方式为网格布局,2行2列,行和列的间距都是10
		ctainer.setLayout(new GridLayout(3, 2, 10, 10));

		// 年龄,下拉框中的范围:1~100
		JLabel lbAge = new JLabel("年龄:");// 创建一个文本标签
		final JComboBox combo1 = new JComboBox();
		combo1.addItem("--请选择--");
		for (int i = 1; i <= 100; i++) {
			combo1.addItem(i + "岁");
		}
		/**
		 * 索引从0开始,第一个下拉框的值为“请选择”,选择18岁索引就是18
		 */
		combo1.setSelectedIndex(18);

		// 科目, 下拉框中的范围:"语文", "数学", "英语", "化学"
		JLabel lbSubject = new JLabel("学习科目:");// 创建一个文本标签
		final JComboBox combo2 = new JComboBox();
		String sbArr[] = { "语文", "数学", "英语", "化学" };
		ComboBoxModel model = new DefaultComboBoxModel(sbArr);// 创建下拉框数据模型对象
		combo2.setModel(model);// 给下拉框combo2设置对应的数据模型model对象

		/**
		 * 设置是否可以编辑<br/>
		 * true为可编辑,false为不可编辑
		 */
		combo2.setEditable(true);

		/**
		 * 点击按钮名称为“获取选中值”会将选中的下拉框里面的值进行弹窗显示,显示包括选中的值内容和对应的索引
		 */
		JButton btn = new JButton("获取选中的值");
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(JComboBoxTest.this,
						"所选中的年龄为:" + combo1.getSelectedItem() + ",索引是" + combo1.getSelectedIndex() + "\n所选中的科目为:"
								+ combo2.getSelectedItem() + ",索引是" + combo2.getSelectedIndex());
			}
		});

		// 向容器中添加文本标签,下拉框,按钮组件
		ctainer.add(lbAge);
		ctainer.add(combo1);
		ctainer.add(lbSubject);
		ctainer.add(combo2);
		ctainer.add(btn);

		// 设置窗口为显示状态
		this.setVisible(true);
	}

	public static void main(String args[]) {
		JFrame jframe = new JComboBoxTest();
	}

}
  • 代码效果图
    在这里插入图片描述

列表框(JList

  • 代码部分
package top.linksinke.test;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;

/**
 * JList 列表框的使用 <br/>
 * create by LINKSINKE on 2020/2/29
 */
public class JListTest extends JFrame {
	public JListTest() {
		// 设置close按钮的操作(关闭窗口并停止程序的运行)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗口默认打开的位置和大小
		this.setBounds(20, 20, 300, 300);
		// 获取容器对象
		Container ctainer = this.getContentPane();
		// 设置布局方式为绝对布局
		ctainer.setLayout(null);

		// 1、爱吃的鱼
		String[] fish = { "鲢鱼", "鳙鱼", "草鱼", "鲤鱼", "鲫鱼", "八爪鱼", "泥鳅", "黄辣丁", "鲶鱼" };
		final JList jlist1 = new JList(fish);
		/**
		 * 设置选择模式 <br/>
		 * SINGLE_SELECTION: 单选模式(只能选择一个)<br/>
		 * SINGLE_INTERVAL_SELECTION: 多选模式(但是只能选择邻居元素) <br/>
		 * MULTIPLE_INTERVAL_SELECTION: 多选模式(可以选择多个,无邻居之分)
		 */
		jlist1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

		JScrollPane sp1 = new JScrollPane(jlist1);
		// 将位于x=20,y=0,长为200,宽为100带标题边框显示的滚动面板添加到容器中
		sp1.setBounds(50, 0, 200, 100);
		sp1.setBorder(BorderFactory.createTitledBorder("爱吃的鱼"));
		ctainer.add(sp1);

		// 2、爱喝的酒
		String[] wine = { "啤酒", "白酒", "葡萄酒", "鸡尾酒", "药酒" };
		final JList jlist2 = new JList();

		/**
		 * 可以使用这个方式来添加列表框的内容:<br/>
		 * ComboBoxModel model = new DefaultComboBoxModel(wine);
		 * jlist2.setModel(model); 也可以使用以下方式来添加列表框的内容:
		 */
		DefaultListModel model = new DefaultListModel(); // 创建列表框的数据模型
		for (int i = 0; i < wine.length; i++) {
			model.addElement(wine[i]);// 给列表框添加元素
		}
		jlist2.setModel(model);// 将列表框jlist2设置一个数据模型model
		/**
		 * 设置选择模式 <br/>
		 * SINGLE_SELECTION: 单选模式(只能选择一个)<br/>
		 * SINGLE_INTERVAL_SELECTION: 多选模式(但是只能选择邻居元素) <br/>
		 * MULTIPLE_INTERVAL_SELECTION: 多选模式(可以选择多个,无邻居之分)
		 */
		jlist2.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

		JScrollPane sp2 = new JScrollPane(jlist2);
		// 将位于x=50,y=110,长为200,宽为100带标题边框显示的滚动面板添加到容器中
		sp2.setBounds(50, 110, 200, 100);
		sp2.setBorder(BorderFactory.createTitledBorder("爱喝的酒"));
		ctainer.add(sp2);

		/**
		 * 通过按钮来获取列表框中选择的内容
		 */
		JButton btn = new JButton("我的最爱");
		// 设置按钮的文本颜色
		btn.setForeground(Color.red);
		btn.setBounds(80, 220, 100, 30);
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				/**
				 * 利用格式字符串来美化消息输出<br/>
				 * %s: 对应的数据类型为字符串类型<br/>
				 * %d: 对应的数据类型为10进制整数类型
				 */
				String msg = String.format("爱吃的鱼有:%s,共计:%s条\n爱喝的酒有:%s,共计:%s种",
						arrayToString(jlist1.getSelectedValues()), jlist1.getSelectedValues().length,
						arrayToString(jlist2.getSelectedValues()), jlist2.getSelectedValues().length);
				JOptionPane.showMessageDialog(JListTest.this, msg);
			}
		});
		ctainer.add(btn);

		// 设置窗口是否显示 (true为显示窗口,false为不显示窗口)
		this.setVisible(true);
	}

	/**
	 * 将数组转换为字符串
	 * 
	 * @param objArray
	 *            需要格式成字符串的数组
	 * @return 最后一个“,”不要,也就是从0开始到最后一个不是逗号的开始截取返回字符串
	 */
	private String arrayToString(Object[] objArray) {
		StringBuffer sb = new StringBuffer();
		// 数组要是为空的话就直接返回空字符串,否则就继续下面的语句
		if (objArray == null || objArray.length == 0)
			return "";

		for (int i = 0; i < objArray.length; i++) {
			sb.append(objArray[i] + "  |  ");
		}
		return sb.substring(0, sb.toString().length() - 4);

	}

	public static void main(String args[]) {
		JFrame jframe = new JListTest();
	}
}
  • 代码效果图
    在这里插入图片描述
发布了68 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_29001539/article/details/104572859