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