java-swing-实例-动作监听器和项目监听器

之前学习了动作监听器,现在做一个关于下拉列表的小程序。

创建一个下拉列表,一个文本框,一个删除按钮,一个添加按钮。

在文本框中输入游戏名称,点击添加按钮,下拉列表里会增加一个游戏,选择下拉列表的一个项,点击删除按钮,选择的项会从下拉列表中删去。

分步骤代码如下:

要导入的类:

import javax.swing.JFrame;   //顶层容器 (框架)
import javax.swing.JPanel; //中间容器 (嵌板)最常用的面板
import javax.swing.JButton;  //按钮
import javax.swing.JLabel;   //标签
import javax.swing.JTextField; //单行文本框
import javax.swing.JComboBox;  //下拉列表的类
import java.awt.event.ActionEvent;   //动作事件
import java.awt.event.ActionListener;  //动作监听者(要实现的接口,需要重写里面的actionPerformed方法)
import java.awt.event.ItemListener;  //项目事件
import java.awt.event.ItemEvent;   //项目监听者(要实现的接口,需要重写itemStateChanged方法)

创建窗口,面板,按钮,文本框,下拉列表,加两个标签。

JFrame jframe = new JFrame("动作监听");  //窗口
JPanel jpanel1 = new JPanel();  //面板
JButton jbutton1 = new JButton("添加");  //按钮1
JButton jbutton2 = new JButton("删除");  //按钮2
JTextField jtextfield1 = new JTextField("",15);  //文本框
JLabel jlabel1 = new JLabel("输入新游戏:");  //标签1
JLabel jlabel2 = new JLabel();   //标签2
JComboBox<String> combo = new JComboBox<String>(); //下拉列表

向下拉列表添加3个游戏

combo.addItem("选择游戏");
combo.addItem("英雄联盟");
combo.addItem("守望先锋");
combo.addItem("穿越火线");

下面是重点

创建继承ActionListener接口的实现类,重写actionPerformed方法

下面用的是三种实现方法中的第一种,借助if-else语句实现

		class myActionListener implements ActionListener
		{
			@Override     //方法重写
			public void actionPerformed(ActionEvent e)
			{
				String name = e.getActionCommand();//当发生动作时
				//获取 做出响应的控件 的名称
				//在这个程序中,是两个按钮“添加”和“删除”
				if(name.equals("添加"))  //判断是“添加”按钮还是“删除”按钮
				{
					if(jtextfield1.getText().length() != 0)//判断文本框是否为空,即是否有输入
					{
						combo.addItem(jtextfield1.getText());
						jlabel2.setText("添加成功,添加了" + jtextfield1.getText());
					}
					else
					{
						jpanel1.add(jlabel2);
						jlabel2.setText("请输入要添加的游戏");
					}
				}
				else if(name.equals("删除"))
				{
					//下面这个函数判断下拉列表是否有 项 被选中,没有返还-1
					if(combo.getSelectedIndex() != -1)
					{
					//或许被选中的 项 的名称
						String del = combo.getSelectedItem().toString();
						combo.removeItem(del);  //从下拉列表中删除
						jpanel1.add(jlabel2);
						jlabel2.setText("    删除成功");
					}
					else
					{
						jpanel1.add(jlabel2);
						jlabel2.setText("请选择要删除的星座");
					}
				}
			}
		}

下拉列表和两个按钮添加监听器

combo.addItemListener(new myItemListener()); //下拉列表添加 项目监听器
//两个按钮都添加动作监听器
jbutton1.addActionListener(new myActionListener()); 
jbutton2.addActionListener(new myActionListener());

最后,进行添加的操作

jpanel1.add(combo);   //下拉列表添加到面板
jpanel1.add(jlabel1);   //标签1添加到面板
jpanel1.add(jtextfield1);  //文本框添加入面板
jpanel1.add(jbutton1);    //按钮1添加入面板
jpanel1.add(jbutton2);    //按钮2添加入面板
jframe.add(jpanel1);    //面板添加入窗口

运行结果:
在这里插入图片描述
完整的可运行的源代码:

import javax.swing.JFrame;   //顶层容器 (框架)
import javax.swing.JPanel; //中间容器 (嵌板)最常用的面板
import javax.swing.JButton;  //按钮
import javax.swing.JLabel;   //标签
import javax.swing.JTextField; //单行文本框
import javax.swing.JComboBox;  //下拉列表的类
import java.awt.event.ActionEvent;   //动作事件
import java.awt.event.ActionListener;  //动作监听者(要实现的接口,需要重写里面的actionPerformed方法)
import java.awt.event.ItemListener;  //项目事件
import java.awt.event.ItemEvent;   //项目监听者(要实现的接口,需要重写itemStateChanged方法)

public class example
{
	public static void main(String[] args) 
	{
		JFrame jframe = new JFrame("动作监听");  //窗口
		jframe.setSize(500, 200);   //设置窗口大小
		JPanel jpanel1 = new JPanel();  //面板
		JButton jbutton1 = new JButton("添加");  //按钮1
		JButton jbutton2 = new JButton("删除");  //按钮1
		JTextField jtextfield1 = new JTextField("",15);  //用于显示的文本框,为15列
		JLabel jlabel1 = new JLabel("输入新游戏:");
		JLabel jlabel2 = new JLabel();
		jtextfield1.setHorizontalAlignment(JTextField.RIGHT);
		JComboBox<String> combo = new JComboBox<String>();
		combo.addItem("选择游戏");
		combo.addItem("英雄联盟");
		combo.addItem("守望先锋");
		combo.addItem("穿越火线");

		jpanel1.add(combo);
		jpanel1.add(jlabel1);
		jpanel1.add(jtextfield1);  //文本框添加入面板
		jpanel1.add(jbutton1);    //按钮1添加入面板
		jpanel1.add(jbutton2);    //按钮2添加入面板
		jframe.add(jpanel1);    //面板添加入窗口
		
		class myItemListener implements ItemListener
		{
			@Override
			public void itemStateChanged(ItemEvent e)
			{
				String str = e.getItem().toString();
				jlabel2.setText("你选择的游戏是:" + str);
				jpanel1.add(jlabel2);
			}
		}
		
		class myActionListener implements ActionListener
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				String name = e.getActionCommand();
				if(name.equals("添加"))
				{
					if(jtextfield1.getText().length() != 0)
					{
						combo.addItem(jtextfield1.getText());
						jlabel2.setText("添加成功,添加了" + jtextfield1.getText());
					}
					else
					{
						jpanel1.add(jlabel2);
						jlabel2.setText("请输入要添加的游戏");
					}
				}
				else if(name.equals("删除"))
				{
					if(combo.getSelectedIndex() != -1)
					{
						String del = combo.getSelectedItem().toString();
						combo.removeItem(del);
						jpanel1.add(jlabel2);
						jlabel2.setText("    删除成功");
					}
					else
					{
						jpanel1.add(jlabel2);
						jlabel2.setText("请选择要删除的星座");
					}
				}
			}
		}
		combo.addItemListener(new myItemListener());
		jbutton1.addActionListener(new myActionListener());
		jbutton2.addActionListener(new myActionListener());
		
		
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
		jframe.setVisible(true);   //设置可见
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44512194/article/details/93377363