📄 contentpane.java
字号:
/*
* 创建日期 2006-9-10
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package calculator;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.*;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
/**
* @author 周泼 200432580024
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class ContentPane extends JPanel {
private JTextField input;
private JTextField output;
private JButton confirm;
private JButton clear;
private JButton one;
private JButton two;
private JButton three;
private JButton four;
private JButton five;
private JButton six;
private JButton seven;
private JButton eight;
private JButton nine;
private JButton zero;
private JButton point;
private JButton multiply;
private JButton divide;
private JButton add;
private JButton subtract;
private JButton leftBr;
private JButton rightBr;
public ContentPane(){
// 获取缺省工具箱
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new enterAction(), AWTEvent.KEY_EVENT_MASK);
// 输入与输出部分
JPanel top_Panel = new JPanel(new GridLayout(3,1));
// 定义并初始化 intput_Label
JLabel input_Label = new JLabel("输入四则运算式:");
input_Label.setForeground(new Color(47, 33, 222));
input_Label.setFont(new Font("楷体_GB2312",Font.BOLD,13));
top_Panel.add(input_Label);
// 初始化 input
input = new JTextField();
JPanel output_Panel = new JPanel(new BorderLayout());
// 定义并初始化 output_Label
JLabel output_Label = new JLabel("运算结果:");
output_Label.setFont(new Font("华文中宋", Font.BOLD, 13));
output_Label.setForeground(new Color(202, 119, 79));
// 初始化 output
output = new JTextField();
output.setEditable(false);
output.setForeground(new Color(250, 22, 148));
output_Panel.add(output_Label,BorderLayout.WEST);
output_Panel.add(output, BorderLayout.CENTER);
top_Panel.add(input_Label);
top_Panel.add(input);
top_Panel.add(output_Panel);
// 按钮部分
confirm = new JButton("确定");
confirm.setForeground(new Color(117, 0, 117));
confirm.setFont(new Font("黑体", Font.BOLD, 12));
confirm.setName("Confirm");
confirm.addActionListener(new confirmListener()); // 添加鼠标监听
clear = new JButton("清除");
clear.setName("Divide");
clear.addActionListener(new clearListener());
// 实例化各个 JButton ,并分别设置名字
one = new JButton("1");
one.setName("1");
two = new JButton("2");
two.setName("2");
three = new JButton("3");
three.setName("3");
four = new JButton("4");
four.setName("4");
five = new JButton("5");
five.setName("5");
six = new JButton("6");
six.setName("6");
seven = new JButton("7");
seven.setName("7");
eight = new JButton("8");
eight.setName("8");
nine = new JButton("9");
nine.setName("9");
zero = new JButton("0");
zero.setName("0");
point = new JButton(".");
point.setName("10");
add = new JButton("+");
add.setName("11");
subtract = new JButton("-");
subtract.setName("12");
multiply = new JButton("*");
multiply.setName("13");
divide = new JButton("/");
divide.setName("14");
leftBr = new JButton("(");
leftBr.setName("15");
rightBr = new JButton(")");
rightBr.setName("16");
// 为各个 JButton 添加监听
one.addActionListener(new action());
two.addActionListener(new action());
three.addActionListener(new action());
four.addActionListener(new action());
five.addActionListener(new action());
six.addActionListener(new action());
seven.addActionListener(new action());
eight.addActionListener(new action());
nine.addActionListener(new action());
zero.addActionListener(new action());
point.addActionListener(new action());
multiply.addActionListener(new action());
divide.addActionListener(new action());
add.addActionListener(new action());
subtract.addActionListener(new action());
leftBr.addActionListener(new action());
rightBr.addActionListener(new action());
JPanel button_Panel = new JPanel(new GridLayout(4, 5));
button_Panel.add(one);
button_Panel.add(two);
button_Panel.add(three);
button_Panel.add(four);
button_Panel.add(five);
button_Panel.add(six);
button_Panel.add(seven);
button_Panel.add(eight);
button_Panel.add(nine);
button_Panel.add(zero);
button_Panel.add(point);
button_Panel.add(add);
button_Panel.add(subtract);
button_Panel.add(multiply);
button_Panel.add(divide);
button_Panel.add(leftBr);
button_Panel.add(rightBr);
button_Panel.add(clear);
button_Panel.add(confirm);
// 作者
JLabel author = new JLabel(" 光明使者");
author.setFont(new Font("华文彩云", Font.ITALIC, 13));
// 合并 Panel
setLayout(new BorderLayout());
add(top_Panel, BorderLayout.NORTH);
add(button_Panel,BorderLayout.CENTER);
add(author,BorderLayout.SOUTH);
}
public class confirmListener implements ActionListener {
public void actionPerformed (ActionEvent e){
// 从输入文本框中获取文本
String input_String = input.getText();
if(input_String.length() == 0){ // 输入文本框为空时
output.setText("请输入表达式!");
}else{
// 将结果显示到输出文本框
output.setText(new Calculate(input_String).getResult());
}
}
}
// 清除按钮的监听
public class clearListener implements ActionListener {
public void actionPerformed (ActionEvent e){
input.setText("");
}
}
// 实现接收动作事件的监听者接口
public class action implements ActionListener{
public void actionPerformed(ActionEvent e) {
String inputStr = input.getText();
// 获取发生动作事件的按钮
JButton button = (JButton)e.getSource();
// 获取该按钮的名字
int buttonName = Integer.parseInt(button.getName());
switch(buttonName){
case 1:inputStr += "1";break;
case 2:inputStr += "2";break;
case 3:inputStr += "3";break;
case 4:inputStr += "4";break;
case 5:inputStr += "5";break;
case 6:inputStr += "6";break;
case 7:inputStr += "7";break;
case 8:inputStr += "8";break;
case 9:inputStr += "9";break;
case 0:inputStr += "0";break;
case 11:inputStr += "+";break;
case 12:inputStr += "-";break;
case 13:inputStr += "*";break;
case 14:inputStr += "/";break;
case 10:inputStr += ".";break;
case 15:inputStr += "(";break;
case 16:inputStr += ")";break;
default:break;
}
input.setText(inputStr);
}
}
// 快捷监听
public class enterAction implements AWTEventListener{
public void eventDispatched(AWTEvent event){
int kc = ((KeyEvent)event).getKeyCode();
if(kc == KeyEvent.VK_ENTER) // 按下回车键
{
// 从输入文本框中获取文本
String input_String = input.getText();
if(input_String.length() == 0){ // 输入文本框为空时
output.setText("请输入表达式!");
}else{
// 将结果显示到输出文本框
output.setText(new Calculate(input_String).getResult());
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -