发布于2021-08-08 17:33 阅读(184) 评论(0) 点赞(9) 收藏(2)
ItemEvent事件源:
选择框,下拉列表都可以触发ItemEvent事件
注册监视器:
能够触发ItemEvent事件的组件使用addItemListener(ItemListener listen)
将实现ItemListener的接口的类的实例注册为事件源的监视器
ItemListener接口:
接口中仅有一个方法,public void itemStateChanged(ItemEvent e)
对发生事件做出处理
返回发生ItemEvent的事件源:
getSource();
getItemSelectable();
下面的例子是简单的计算器,实现如下功能
1、用户在窗口中的两个文本框中输入参与运算的两个操作数
2、用户在下拉列表中选择运算符将触发ItemEvent事件,ItemEvent事件的监视器(operatorListener类负责创建)获得运算符,并将运算符传递给ActionEvent事件的监视器computer
3、用户点击按钮触发ActionEvent事件,监视器computer(computerListener类负责创建)给出运算结果
public class Example9_8 {
public static void main(String args[])
{
WindowOperation win = new WindowOperation();
win.setBounds(100,100,390,360);
win.setTitle("简单计算器");
}
}
import java.awt.*;
import javax.swing.*;
public class WindowOperation extends JFrame{
private static final long serialVersionUID = 3530745896462734297L;
JTextField inputNumberOne,inputNumberTwo;//添加两个输入文本框
JComboBox<String> choiceFuhao;//下拉列表
JTextArea textShow;//文本区
JButton button;//按钮
OperatorListener operator;//监视itemEvent
ComputerListener computer;//监视ActionEvent
public WindowOperation()//构造函数
{
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init()
{
setLayout(new FlowLayout());//设置布局
Font font =new Font("宋体",Font.BOLD,22);
//Font font = new Font("宋体",Font.BOLD,22);
inputNumberOne = new JTextField(5);//
inputNumberOne.setFont(font);
inputNumberTwo = new JTextField(5);//分配空间
inputNumberTwo.setFont(font);
choiceFuhao = new JComboBox<String>();//重点后面的<>,不能省略
choiceFuhao.setFont(font);
button = new JButton("计算");
button.setFont(font);
choiceFuhao.addItem("选择运算符号:");//将后面的字符串添加到下拉列表中去
String []a = {"+","-","*","/"};
for(int i=0;i<a.length;i++)
{
choiceFuhao.addItem(a[i]);//将后面的字符串添加到下拉列表中去
}
textShow = new JTextArea(9,30);//
textShow.setFont(font);
operator = new OperatorListener();
computer = new ComputerListener();
operator.setJComboBox(choiceFuhao);
operator.setWorkTogether(computer);
computer.setJTextFieldOne(inputNumberOne);
computer.setJTextFieldTwo(inputNumberTwo);
computer.setJTextArea(textShow);
choiceFuhao.addItemListener(operator);
button.addActionListener(computer);
this.add(inputNumberOne);
this.add(choiceFuhao);
this.add(inputNumberTwo);
this.add(button);
this.add(new JScrollPane(textShow));
}
}
import java.awt.event.*;
import javax.swing.*;
public class OperatorListener implements ItemListener{
JComboBox<String> choice;//下拉列表
ComputerListener workTogether;//监视器
public void setJComboBox(JComboBox<String> box)
{
choice = box;
}
public void setWorkTogether(ComputerListener computer)
{
workTogether = computer;
}
public void itemStateChanged(ItemEvent e)//下拉列表后触发该事件
{
//作用:在复选框中得到符号,并且传递给文本框的监视器
String fuhao = choice.getSelectedItem().toString();
workTogether.setFuhao(fuhao);
}
}
import java.awt.event.*;
import javax.swing.*;
public class ComputerListener implements ActionListener{
JTextField inputNumberOne,inputNumberTwo;//文本框
JTextArea textShow;//文本区
String fuhao;//字符串
public void setJTextFieldOne(JTextField t)
{
inputNumberOne = t;
}
public void setJTextFieldTwo(JTextField t)
{
inputNumberTwo = t;
}
public void setJTextArea(JTextArea area)
{
textShow = area;
}
public void setFuhao(String s)
{
fuhao = s;
}
public void actionPerformed(ActionEvent e)//用户单击鼠标,触发事件,做出处理
{
try{
double number1 = Double.parseDouble(inputNumberOne.getText());
double number2 = Double.parseDouble(inputNumberTwo.getText());
double result =0;
if(fuhao.equals("+"))
{
result = number1+number2;
}
else if(fuhao.equals("-"))
{
result = number1-number2;
}
else if(fuhao.equals("*"))
{
result = number1*number2;
}
else if(fuhao.equals("/"))
{
result = number1/number2;
}
textShow.append(number1+" "+fuhao+" "+number2+" = "+result+"\n");
}
catch(Exception exp)
{
textShow.append("\n请输入数字字符\n");
}
}
}
原文链接:https://blog.csdn.net/qq_50675813/article/details/119518536
作者:T4yufbhhhh
链接:http://www.phpheidong.com/blog/article/123299/1a12a22d5594c21b2f2c/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!