编程语言
首页 > 编程语言> > Java实现科学计算器界面设计

Java实现科学计算器界面设计

作者:互联网

Java实现科学计算器界面设计

题目

打开你使用的微软公司 Windows 操作系统或 Linux 等其它操作系统中自带的“计算器”软件,观察和参照其界面和功能,实现一个接近其界面和功能的计算器(标准型或科学型)的界面。

设计思路

设计一个主类,来实现界面的搭建。在主类中首先定义我们需要用到的所有组件和容器。之后在构造方法中进行初始化,并完成界面的搭建。这个计算器的界面比较复杂,所以使用到了底层用容器和中间容器来搭建,底层容器使用空布局,以方便中间层容器设置位置和大小。中间层容器前两个都比较简单,使用默认布局——流式布局就好,第三个jpanel使用格式布局,以方便对计算机按键的排布,布局为6行5列。为使图形界面更加接近windows自带的计算器界面,我们使用窗口颜色设置函数Color来设置窗口颜色,设置方法按RGB形式设置。

代码

package stanarithmapp;

import javax.swing.*;
import java.awt.*;
import javax.swing.border.LineBorder;
import java.awt.ActiveEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class stanarith {
	JFrame jf=null;
	JPanel jp1=null;
	JPanel jp2=null;
	JPanel jp3=null;
	
	JButton jb1=null;
	JButton jb2=null;
	JButton jb3=null;
	JButton jb4=null;
	JButton jb5=null;
	JButton jb6=null;
	JButton jb7=null;
	JButton jb8=null;
	JButton jb9=null;
	JButton jb10=null;
	JButton jb11=null;
	JButton jb12=null;
	JButton jb13=null;
	JButton jb14=null;
	JButton jb15=null;
	JButton jb16=null;
	JButton jb17=null;
	JButton jb18=null;
	JButton jb19=null;
	JButton jb20=null;
	JButton jb21=null;
	JButton jb22=null;
	JButton jb23=null;
	JButton jb24=null;
	JButton jb25=null;
	JButton jb26=null;
	JButton jb27=null;
	JButton jb28=null;
	JTextArea jtx=null;
	
	JLabel jla1=null;
	JLabel jla2=null;
	JLabel jla3=null;
	
	Color c=new Color(218,224,241);
	Color cc=new Color(165,191,218);
	
	//构造函数
	public stanarith() {
		jf=new JFrame("计算器");
		jf.setLayout(null);
		jf.setSize(380,440);
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel(new GridLayout(6,5));
		jp1.setBackground(cc);
		jp2.setBackground(c);
		jp3.setBackground(c);
		jb1=new JButton("MC");
		jb2=new JButton("MR");
		jb3=new JButton("MS");
		jb4=new JButton("M+");
		jb5=new JButton("M-");
		jb6=new JButton("<--");
		jb7=new JButton("CE");
		jb8=new JButton("C");
		jb9=new JButton("±");
		jb10=new JButton("根号");
		jb11=new JButton("7");
		jb11.addActionListener(new MyEvent());
		jb12=new JButton("8");
		jb12.addActionListener(new MyEvent());
		jb13=new JButton("9");
		jb13.addActionListener(new MyEvent());
		jb14=new JButton("/");
		jb15=new JButton("%");
		jb16=new JButton("4");
		jb16.addActionListener(new MyEvent());
		jb17=new JButton("5");
		jb17.addActionListener(new MyEvent());
		jb18=new JButton("6");
		jb18.addActionListener(new MyEvent());
		jb19=new JButton("*");
		jb20=new JButton("1/x");
		jb21=new JButton("1");
		jb21.addActionListener(new MyEvent());
		jb22=new JButton("2");
		jb22.addActionListener(new MyEvent());
		jb23=new JButton("3");
		jb23.addActionListener(new MyEvent());
		jb24=new JButton("-");
		jb24.addActionListener(new MyEvent());
		jb25=new JButton("0");
		jb25.addActionListener(new MyEvent());
		jb26=new JButton(".");
		jb26.addActionListener(new MyEvent());
		jb27=new JButton("+");
		jb27.addActionListener(new MyEvent());
		jb28=new JButton("=");
		jb28.addActionListener(new MyEvent());
		
		jtx=new JTextArea(4,65);
		jla1=new JLabel("查看(V)");
		jla1.setFont(new Font("隶书",Font.BOLD,15));
		jla2=new JLabel("编辑(E)");
		jla2.setFont(new Font("隶书",Font.BOLD,15));
		jla3=new JLabel("帮助(H)");
		jla3.setFont(new Font("隶书",Font.BOLD,15));
		jp1.add(jla1);
		jp1.add(jla2);
		jp1.add(jla3);
		jp2.add(jtx);
		jp3.add(jb1);
		jp3.add(jb2);
		jp3.add(jb3);
		jp3.add(jb4);
		jp3.add(jb5);
		jp3.add(jb6);
		jp3.add(jb7);
		jp3.add(jb8);
		jp3.add(jb9);
		jp3.add(jb10);
		jp3.add(jb11);
		jp3.add(jb12);
		jp3.add(jb13);
		jp3.add(jb14);
		jp3.add(jb15);
		jp3.add(jb16);
		jp3.add(jb17);
		jp3.add(jb18);
		jp3.add(jb19);
		jp3.add(jb20);
		jp3.add(jb21);
		jp3.add(jb22);
		jp3.add(jb23);
		jp3.add(jb24);
		jp3.add(jb25);
		jp3.add(jb26);
		jp3.add(jb27);
		jp3.add(jb28);
		jf.getContentPane().add(jp1);
		jf.getContentPane().add(jp2);
		jf.getContentPane().add(jp3);
		
		jp1.setBounds(7,0,350,45);//宽——高
		jp2.setBounds(7,45,350,100);
		jp3.setBounds(7,145,350,250);
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void main(String []args) {
		stanarith wind=new stanarith();
	}
	public class MyEvent implements ActionListener {
		String a="+";
		String b="-";
		String c="MC";
		float x1,x2,y=0;
		
		public void actionPerformed(ActionEvent e) {
//			if(judge()==1) {
//				System.out.println(judge());
//				jtx.setText("");
//			}
			if(e.getActionCommand()==a) {
				String str1=jtx.getText();
				String str2=jtx.getText();
				float x=Float.parseFloat(str1);
				float y=Float.parseFloat(str2);
				float sum=x+y;
				String s=String.valueOf(sum);
				jtx.setText(s);
			}
			if(e.getActionCommand()==b) {
				String str1=jtx.getText();
				String str2=jtx.getText();
				float x=Float.parseFloat(str1);
				float y=Float.parseFloat(str2);
				float sum=x-y;
				String s=String.valueOf(sum);
				jtx.setText(s);
			}
			if(e.getSource()==jb25) {
				jtx.setText("0");
			}
			if(e.getSource()==jb23) {
				jtx.setText("3");
			}
			if(e.getSource()==jb22) {
				jtx.setText("2");
			}
			if(e.getActionCommand()==c) {
				jtx.setText("");
			}
		}
//	public int judge() {
//		int count1 =0;
//		int count2 =0;
//		int i=0;
//		if(jtx1.getText().length()==0||jtx2.getText().length()==0) {
//			JOptionPane.showMessageDialog(null, "您没有输入完整运算数,请重新输入");
//			return 1;
//		}
//		
//		 if( t1.charAt((t1.length()-1)) == '.' || t1.charAt(0) == '.' || t2.charAt((t2.length()-1)) == '.' || t2.charAt(0) == '.')
//			{
//				JOptionPane.showMessageDialog(null, "您输入的小数点处于最前面或者最后面,请重新输入");
//				return 1;
//			}
//		 for(i=0;i<t1.length();i++) {
//			 if(t1.charAt(i)=='.') {
//				 count1++;
//			 }
//			 if(count1>1) {
//				 JOptionPane.showMessageDialog(null, "您输入的小数点太多了,请重新输入");
//				 return 1;
//			 }
//			 if(t1.charAt(i)!='.'&&t1.charAt(i)!='0'&&t1.charAt(i)!='1'&&t1.charAt(i)!='2'&&t1.charAt(i)!='3'&&t1.charAt(i)!='4'&&t1.charAt(i)!='5'&&t1.charAt(i)!='6'&&t1.charAt(i)!='7'&&t1.charAt(i)!='8'&&t1.charAt(i)!='9') {
//				 JOptionPane.showMessageDialog(null, "您输入了非法字符,请重新输入");
//				 return 1;
//			 }
//		 }
//		 for(i=0;i<t2.length();i++) {
//			 if(t2.charAt(i)=='.') {
//				 count2++;
//			 }
//			 if(count2>1) {
//				 JOptionPane.showMessageDialog(null, "您输入的小数点太多了,请重新输入");
//				 return 1;
//			 }
//			 if(t2.charAt(i)!='.'&&t2.charAt(i)!='0'&&t2.charAt(i)!='1'&&t2.charAt(i)!='2'&&t2.charAt(i)!='3'&&t2.charAt(i)!='4'&&t2.charAt(i)!='5'&&t2.charAt(i)!='6'&&t2.charAt(i)!='7'&&t2.charAt(i)!='8'&&t2.charAt(i)!='9') {
//				 JOptionPane.showMessageDialog(null, "您输入了非法字符,请重新输入");
//				 return 1;
//			 }
//		 }
//		 return 0;
//}
}}

运行结果

在这里插入图片描述

标签:界面设计,Java,charAt,t2,t1,&&,计算器,null,JButton
来源: https://blog.csdn.net/weixin_49858823/article/details/118916166