java笔记 ItemListener
java笔记 ItemListener
//Inner class 事件处理例一
import java.awt.*;
import java.awt.event.*;
import java.net.PortUnreachableException;
import javax.swing.*;
class WindowOperator extends JFrame
{
JTextField inputNumber1, inputNumber2; // 输入框
JComboBox choiceFuhao; // 下拉菜单
JTextArea textshow; // 输出框
JButton button; // 确认按钮
OperatorListener operator; // 监视 下拉菜单的监视器
ComputerListener computer; // 监视 ActionEvent 的监视器,也就是按钮
public WindowOperator(String s)
{
init(s);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void init(String s)
{
setLayout(new FlowLayout());
setTitle(s);
setBounds(100, 100, 390, 360);
// 实例化组件
inputNumber1 = new JTextField(5);
inputNumber2 = new JTextField(5);
choiceFuhao = new JComboBox();
button = new JButton("计算");
choiceFuhao.addItem("选择计算符号:");
String [] a = {"+", "-", "*", "/"};
for(int i = 0; i < a.length; i++)
choiceFuhao.addItem(a[i]);
textshow = new JTextArea(9, 30);
operator = new OperatorListener();
computer = new ComputerListener();
// 输入文本监视器
operator.setJComBox(choiceFuhao); // 设置下拉菜单内容
operator.setWorkTogether(computer); // 设置监听器
// 按钮和输出文本监视器
computer.setJTexFiled1(inputNumber1); // 设置数字文本内容
computer.setJTexFiled2(inputNumber2);
computer.setJTextArea(textshow);
// 注册符号的监听器
choiceFuhao.addItemListener(operator);
// 注册计算按钮的监视器
button.addActionListener(computer);
// 添加组件
add(inputNumber1);
add(choiceFuhao);
add(inputNumber2);
add(button);
add(textshow);
}
// 实例化OperatorListener,下拉菜单的监视器
public class OperatorListener implements ItemListener
{
JComboBox choice;
ComputerListener workTogether;
public void setJComBox(JComboBox box) { choice = box;} // 设置下拉菜单内容
public void setWorkTogether(ComputerListener computer) {workTogether = computer;} // 设置监听器
public void itemStateChanged(ItemEvent e)
{
String fuhao = choice.getSelectedItem().toString(); // getSelectedItem返回的是对象
workTogether.setFuhao(fuhao);
}
}
// 实例化ComputerListener,按钮的监视器
private class ComputerListener implements ActionListener
{
JTextField inpterNumber1, inpterNumber2;
JTextArea textshow;
String fuhao ;
public void setJTexFiled1(JTextField t) {inputNumber1 = t;}
public void setJTexFiled2(JTextField t) {inputNumber2 = t;}
public void setJTextArea(JTextArea t) {textshow = t; }
public void setFuhao(String s) {fuhao = s;}
public void actionPerformed(ActionEvent e)
{
//将文本中的字符串转为double
double num1 = Double.valueOf(inputNumber1.getText());
double num2 = Double.valueOf(inputNumber2.getText());
double sum = 0;
// 计算
if (fuhao.equals("+")) {sum = num1 + num2;}
else if(fuhao.equals("-")) {sum = num1 - num2;}
else if(fuhao.equals("*")) {sum = num1 * num2;}
else if(fuhao.equals("/")) {sum = num1 / num2;}
String res = String.format("%.3f", sum);
// 将结果转为字符串输出
textshow.append(num1 + " " + fuhao + " " + num2 + " = " + res + "\n");
}
}
}
//主类
public class test
{
public static void main(String args[])
{
WindowOperator win = new WindowOperator("简单计算器");
}
}
实现ItemListener接口,覆盖函数itemStateChanged,传入参ItemEvent
java笔记 ItemListener相关教程
【Java】I/O(输入/输出)
【Java】I/O(输入/输出) InputStream类是字节输入流的抽象类,是所有字节输入流的父类。 Reader类是字符输入流的抽象类,所有字符输入流实现都是它的子类。 OutputStream类是字节输出流的抽象类。 Writer类是字符输出流抽象类,所有字符输出类的实现都是它
Java 中 YYYY-MM-dd 在跨年时的致命问题
Java 中 YYYY-MM-dd 在跨年时的致命问题 转载自:https://www.jianshu.com/p/7a01ea86b019 在跨年期间,如果在日期格式化的时候使用 YYYY 来格式化年份,则可能会出现下图所示的bug: 解决方案 YYYY 在官方文档中的解释是 week-based-year, 表示当天所在的周
python金融量化分析 | 闲杂笔记
python金融量化分析 | 闲杂笔记 最近事情好像有点多,处理得心不在焉。之前国庆计划把张五常老师的经济解释卷二,但也是只把第三章生产的成本看了一下,哈哈~ 这是一篇python金融量化分析的闲杂且入门的笔记,感觉学习价值较低,我只是记一下我码的代码,怎么
Java09-BigDecimal/BigInteger和IO读取
Java09-BigDecimal/BigInteger和IO读取 1 BigDecimal/BigInteger BigDecimal:常用来解决精确的浮点数运算。 BigInteger:常用来解决超大的整数运算。 BigDecimal.valueOf(2); add(BigDecimal bd): 做加法运算 substract(BigDecimal bd) : 做减法运算 multi
力扣刷题Python笔记:最长有效括号
力扣刷题Python笔记:最长有效括号 题目 给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。 来源:力扣(LeetCode) python解法 中午不睡,下午崩溃~ 已经做过了几个括号有关的题,于是这次自然而然地想到了要用栈,但是却想不
Java - 【时间类】Date、Instant与LocalDateTime
Java - 【时间类】Date、Instant与LocalDateTime JDK8之前 java.util.Date SimpleDateFormat parse format abstartct Calendar( 不介绍 ) JDK8及之后 时区问题 直接加8小时( TimeUnit.HOURS.toMillis(8) ) Instant默认时区UTC,比中国时间少8H LocalDateT
[Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的
[Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具 作者:HelloGitHub- 小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发。JeecgBoot 采用开发模式:Online Coding 模式- 代码生成器模式- 手工 MERGE 智能开发,帮助解决
idea设置将普通文件夹设置为resourses资源文件夹或者java代码根
idea设置:将普通文件夹设置为resourses资源文件夹或者java代码根目录文件夹 如下图所示的resources文件夹不是一个资源文件夹,所以无法读取文件夹下配置文件的内容,配置文件也无法生效。具体操作如下: 选中resources文件夹 = 右键 = 选择Mark Directory a