(1) 주요 기능 : 덧셈, 뺄셈, 곱셈, 나눗셈 등의 간단한 쌍안 연산과 제곱근, 퍼센트 등의 단안 연산 구현
(2) 보조 기능 : 버튼으로 구현 C" 텍스트 상자 지우기, "←" 버튼은 백스페이스를 구현하고 텍스트 상자의 가장 오른쪽 문자를 삭제합니다.
"패널 개체"를 만들고 해당 레이아웃 관리 방법을 5가 있는 GridLayout 레이아웃으로 설정합니다. 20개의 버튼을 수용할 수 있는 행과 4개의 열 방식입니다. 20개의 버튼 구성 요소를 포함하는 텍스트 상자와 패널은 테두리 레이아웃 방법을 사용하여 각각 BorderLayout.NORTH 및 중앙 위치 BorderLayout.CENTER로 레이아웃합니다.
그런 다음 20개 버튼의 텍스트 콘텐츠를 설정합니다. 문자열 배열, 20개 버튼에 텍스트 콘텐츠를 저장하고 JButton 유형(또는 버튼 유형)의 배열을 선언 및 생성한 다음 for 루프를 사용하여 20개 버튼에 텍스트를 순차적으로 추가합니다.
최종 인터페이스 효과를 먼저 살펴보겠습니다.
사용자 작업에 응답하는 이벤트 처리에 "대리자 이벤트 처리 모델"을 사용합니다. 이번에 사용하는 주요 컴포넌트는 버튼과 텍스트 박스이므로 ActionEvent 클래스로 분류할 수 있습니다. ActionListener 이벤트 리스너 인터페이스를 사용하여 이벤트에 응답하는 actionPerformed 메소드를 구현합니다.
계산 함수 구현: 이진 연산자와 단항 연산자의 다양한 처리에 주의하세요. 이항 연산자는 첫 번째 피연산자의 값과 이항 연산 이후의 값을 저장하는 변수를 정의합니다. "="를 클릭하면 연산 결과가 텍스트 상자에 표시됩니다. 단항 연산자는 값을 입력한 후 연산자를 클릭하면 텍스트 상자에 연산 결과가 직접 표시됩니다. 제곱근 함수는 Math 클래스의 sqrt() 메소드를 호출하여 구현되는데, 예를 들어 12%=12*0.01+0.12와 같이 계산을 구현하는 메소드가 특별히 정의되어 있으므로 백분율 연산에 0.01을 직접 곱할 수 있습니다. 이를 위해 코드의 일부는 다음과 같습니다.
public void calculate(){ char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置 int i=0;//移动标志变量 while('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串 s1=s.substring(0,i); s2=s.substring(i+1,s.length()); Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数 Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数 //根据不同的运算符进行相应的计算 if(operator=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } }
코드 아이디어: 8+5 연산식을 예로 들어 보겠습니다. 먼저 텍스트 상자 입력에서 버튼 구성 요소를 통해 사용자가 입력한 계산식 문자열 "8+5"를 가져와서 먼저 문자 배열로 변환하고, 이진 연산인 경우 먼저 루프를 통해 연산자의 위치를 찾습니다. , 그런 다음 StringTokenizer를 사용합니다. 클래스의 문자 분할 및 편집 방법인 substring(a,b)는 아래 첨자가 a에서 시작하고 b-1(왼쪽 닫힘 및 오른쪽 열림 간격)로 끝나는 문자열을 가져오고 연산자를 다음과 같이 사용합니다. 두 문자를 구분하는 구분선, 즉 두 문자 '8'과 '5'를 각각 얻은 다음 Double.parseDouble() 메서드를 사용하여 부동 소수점으로 변환합니다. 마지막으로 다른 작업에 따라 연산자는 해당 계산을 수행하고 결과를 변수 결과에 저장합니다. 단항 연산자는 분할 후 왼쪽 피연산자가 하나만 있고 오른쪽 피연산자가 없다는 점을 제외하면 동일합니다.
텍스트 상자를 지우기 위한 "C" 버튼 구현: 텍스트 상자 객체의 멤버 메소드 setText("")를 호출하고 빈 문자열로 재설정
버튼 "←" 구현: 먼저 가져오기 문자열의 텍스트 상자 문자열을 가져온 다음 substring() 멤버 메서드를 호출하여 마지막 문자를 제외한 나머지 하위 문자열을 가져오고 마지막으로 문자열을 텍스트 상자 객체의 내용으로 설정합니다. 코드의 일부는 다음과 같습니다:
String str=input.getText(); if(str.length()>1){ str=str.substring(0,str.length()-1); input.setText(str); } else{ input.setText(""); }
import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.StringTokenizer; public class Calculator extends JFrame implements ActionListener{ JTextField input;//文本框,显示计算结果 JButton []button=new JButton[20];//按钮数组,存放20个按钮组件 JPanel pan=new JPanel(); String name[]={"C","÷", "×", "←","7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "√", "%", "0", ".", "="};//按钮标签数组 double result;//存储双目运算的结果 public Calculator(){ setTitle("模拟计算器—江海大"); pan.setLayout(new GridLayout(5,4));//设置面板pan的布局格式为5行4列的网格布局,存放20个按钮 input=new JTextField(20); input.setText(""); input.setFont(new Font("宋体",Font.BOLD,18)); input.setForeground(Color.BLUE); for(int i=0;i<button.length;i++){ button[i]=new JButton(name[i]); button[i].setFont(new Font("黑体",Font.BOLD,20)); button[i].addActionListener(this);//给每一个按钮注册事件监听器 pan.add(button[i]); } add(input,BorderLayout.NORTH); add(pan,BorderLayout.CENTER); setSize(600,400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体 } //动作响应 public void actionPerformed(ActionEvent e){ //如果点击按钮 "C"则触发清空文本框的操作 if(e.getSource()==button[0]){ input.setText(""); } //如果点击按钮"="则调用计算方法并在文本框显示结果 else if(e.getSource()==button[19]){ calculate(); input.setText(""+result);//输出计算结果 } //如果点击"<--"按钮则删去文本框内字符串的末尾字符 else if(e.getSource()==button[3]){ String str=input.getText(); if(str.length()>1){ str=str.substring(0,str.length()-1); input.setText(str); } else{ input.setText(""); } } //以字符串拼接的方式将点击的按钮的标签拼接起来,成为一个运算表达式字符串 else{ input.setText(input.getText()+e.getActionCommand()); } } public void calculate(){ char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置 int i=0;//移动标志变量 while('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串 s1=s.substring(0,i); s2=s.substring(i+1,s.length()); Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数 Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数 //根据不同的运算符进行相应的计算 if(operator=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } } public static void main(String[]args){ new Calculator(); } }
Addition
Subtraction
Multiplication
부문
제곱근
지우기
위 내용은 Java GUI 그래픽 인터페이스 개발에서 작은 계산기를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!