赞
踩
这是上学期Java的期末设计啦,给大家互相借鉴下,加上搜集资料和自己的理解整合处来的一个多功能计算器,
下面看图片及代码,还有有什么问题可以留言哦,
嗯,这里一共分为五个类来写,第一个来类是JSQ是主界面,然后剩下的类都是功能类
- package qm;
-
- import java.awt.*;
- import java.awt.event.*;
-
- import javax.swing.*;
-
- public class JSQ extends Frame implements ActionListener, WindowListener
- {
- private Container container;
- private GridBagLayout layout;
- private GridBagConstraints constraints;
- private JTextField displayField; //计算结果显示区
- private String lastCommand; //保存+,-,*,/,=命令0
- private double result; //保存计算结果
- private boolean start; //判断是否为数字的开始
- private JMenuBar menubar;
- private JMenuItem m_exit;
- private JMenuItem m2_ejz;
- private JMenuItem m2_bjz;
- private Dialog dialog;
- private Label label_dialog;
- private JButton button_sqrt;
- private JButton button_plusminus;
- private JButton button_CE;
- private JButton button_cancel;
- private JButton button_1;
- private JButton button_2;
- private JButton button_3;
- private JButton button_4;
- private JButton button_5;
- private JButton button_6;
- private JButton button_7;
- private JButton button_8;
- private JButton button_9;
- private JButton button_0;
- private JButton button_plus;
- private JButton button_minus;
- private JButton button_multiply;
- private JButton button_divide;
- private JButton button_point;
- private JButton button_equal;
- private JButton button_log;
- private JButton button_tan;
- private JButton button_cos;
- private JButton button_sin;
- private JButton button_exp;
-
- public JSQ() //构造方法设置布局、为按钮注册事件监听器
- {
- super( "科学计算器" );
- this.setLocation( 300,200 );
- this.setSize( 328,424);
- this.setResizable( true );
- this.setLayout( new GridLayout( 7,1 ) );//网格布局
- this.addmyMenu(); //调用成员方法添加菜单
- displayField = new JTextField( 30 );
- displayField.setBackground(new Color(233,240,247));
- displayField.setForeground(new Color(30,57,91));
-
- // 设置outputField内的默认内容,应该显示为“0”
- displayField.setText("0");
- displayField.setFont(new Font("宋体",Font.BOLD,25));
- // 禁止从界面(键盘)向outputField输入信息,其内容只能通过程序内部改变
- displayField.setEditable(false);
- this.setResizable(false);
- // displayField.setBackground(Color.blue);
- this.add( displayField );
- //displayField.setEditable( true );
-
- start = true;
- result = 0;
- lastCommand = "=";
-
- JPanel panel0 = new JPanel();
-
-
- panel0.setLayout( new GridLayout( 1,4,4,4 ) );
-
-
- JPanel panel1 = new JPanel();
- panel1.setLayout( new GridLayout( 1,5,4,4 ) );
- this.add( panel1 );
- button_sqrt = new JButton( "sqrt" );//根号
- button_sqrt.setBackground(new Color(233,240,247));
- //button_sqrt.setForeground(new Color(30,57,91));
- // button_sqrt.setBackground(Color.blue);
- button_plusminus = new JButton( "+/-" );
- button_plusminus.setBackground(new Color(233,240,247));
- //button_plusminus.setForeground(new Color(30,57,91));
- //button_plusminus.setBackground(Color.blue);
- button_exp = new JButton( "exp" );//底数e的n次幂
- button_exp.setBackground(new Color(233,240,247));
- //button_exp.setForeground(new Color(30,57,91));
- // button_exp.setBackground(Color.blue);
- button_CE = new JButton( "退位");
- button_CE.setBackground(new Color(233,240,247));
- button_CE.setForeground(new Color(30,57,91));
- // button_CE.setBackground(Color.blue);
- button_cancel = new JButton( "CE" );//清除
- button_cancel.setBackground(new Color(233,240,247));
- button_cancel.setForeground(new Color(30,57,91));
- // button_cancel.setBackground(Color.blue);
-
- JPanel panel2 = new JPanel();
- panel2.setLayout( new GridLayout( 1,5,4,4 ) );
- this.add( panel2 );
- button_7 = new JButton( "7" );
- button_7.setBackground(new Color(233,240,247));
- button_7.setForeground(new Color(30,57,91));
- // button_7.setBackground(Color.blue);
- button_8 = new JButton( "8" );
- button_8.setBackground(new Color(233,240,247));
- button_8.setForeground(new Color(30,57,91));
-
- // button_8.setBackground(Color.blue);
- button_9 = new JButton( "9" );
- button_9.setBackground(new Color(233,240,247));
- button_9.setForeground(new Color(30,57,91));
-
- // button_9.setBackground(Color.blue);
- button_log = new JButton( "log" );//对数
- button_log.setBackground(new Color(233,240,247));
- button_log.setForeground(new Color(30,57,91));
-
- // button_log.setBackground(Color.blue);
- button_divide = new JButton( "/" );//除
- button_divide.setBackground(new Color(233,240,247));
- button_divide.setForeground(new Color(30,57,91));
-
- // button_divide.setBackground(Color.blue);
-
- JPanel panel3 = new JPanel();
- panel3.setLayout( new GridLayout(1,5,4,4) );
- this.add( panel3 );
- button_4 = new JButton( "4" );
- button_4.setBackground(new Color(233,240,247));
- button_4.setForeground(new Color(30,57,91));
-
- // button_4.setBackground(Color.blue);
- button_5 = new JButton( "5" );
- button_5.setBackground(new Color(233,240,247));
- button_5.setForeground(new Color(30,57,91));
-
- // button_5.setBackground(Color.blue);
- button_6 = new JButton( "6" );
- button_6.setBackground(new Color(233,240,247));
- button_6.setForeground(new Color(30,57,91));
-
- // button_6.setBackground(Color.blue);
- button_tan = new JButton( "tan" );//正切
- button_tan.setBackground(new Color(233,240,247));
- button_tan.setForeground(new Color(30,57,91));
-
- //.setBackground(Color.blue);
- button_multiply = new JButton( "*" );//乘法
- button_multiply.setBackground(new Color(233,240,247));
- button_multiply.setForeground(new Color(30,57,91));
-
- // button_multiply.setBackground(Color.blue);
-
- JPanel panel4=new JPanel();
- panel4.setLayout( new GridLayout( 1,5,4,4 ) );
- this.add(panel4);
- button_1 = new JButton( "1" );
- button_1.setBackground(new Color(233,240,247));
- button_1.setForeground(new Color(30,57,91));
-
- // button_1.setBackground(Color.blue);
- button_2 = new JButton( "2" );
- button_2.setBackground(new Color(233,240,247));
- button_2.setForeground(new Color(30,57,91));
-
- // button_2.setBackground(Color.blue);
- button_3 = new JButton( "3" );
- button_3.setBackground(new Color(233,240,247));
- button_3.setForeground(new Color(30,57,91));
-
- // button_3.setBackground(Color.blue);
- button_cos = new JButton( "cos");//余弦
- button_cos.setBackground(new Color(233,240,247));
- button_cos.setForeground(new Color(30,57,91));
-
- // button_cos.setBackground(Color.blue);
- button_minus = new JButton( "-" );
- button_minus.setBackground(new Color(233,240,247));
- button_minus.setForeground(new Color(30,57,91));
-
- // button_minus.setBackground(Color.blue);
-
- JPanel panel5 = new JPanel();
- panel5.setLayout( new GridLayout( 1,5,4,4 ) );
- this.add( panel5 );
-
- button_point=new JButton( "." );
- button_point.setBackground(new Color(233,240,247));
- button_point.setForeground(new Color(30,57,91));
-
- button_0 = new JButton( "0" );
- button_0.setBackground(new Color(233,240,247));
- button_0.setForeground(new Color(30,57,91));
-
- // button_0.setBackground(Color.blue);
- // button_point=new JButton( "." );
- // button_point.setBackground(new Color(233,240,247));
- // button_point.setForeground(new Color(30,57,91));
-
- //button_point.setBackground(Color.blue);
-
- button_equal = new JButton( "=" );
- button_equal.setBackground(new Color(233,240,247));
- button_equal.setForeground(new Color(30,57,91));
-
- // button_equal.setBackground(Color.blue);
- button_sin = new JButton( "sin" );//正弦
- button_sin.setBackground(new Color(233,240,247));
- button_sin.setForeground(new Color(30,57,91));
-
- // button_sin.setBackground(Color.blue);
- button_plus = new JButton( "+" );
- button_plus.setBackground(new Color(233,240,247));
- button_plus.setForeground(new Color(30,57,91));
-
- // button_plus.setBackground(Color.blue);
-
- panel1.add( button_sqrt );
- panel1.add( button_plusminus );
- panel1.add( button_exp );
- panel1.add( button_CE );
- panel1.add( button_cancel );
- panel2.add( button_7 );
- panel2.add( button_8 );
- panel2.add( button_9 );
- panel2.add( button_log );
- panel2.add( button_divide );
- panel3.add( button_4 );
- panel3.add( button_5 );
- panel3.add( button_6 );
- panel3.add( button_tan );
- panel3.add( button_multiply );
- panel4.add( button_1 );
- panel4.add( button_2 );
- panel4.add( button_3 );
- panel4.add( button_cos );
- panel4.add( button_minus );
- panel5.add( button_point );
- panel5.add( button_0 );
- // panel5.add( button_point );
- panel5.add( button_equal );
- panel5.add( button_sin );
- panel5.add( button_plus) ;
-
- button_sqrt.addActionListener( this );
- button_plusminus.addActionListener( this );
- button_exp.addActionListener( this );
- button_CE.addActionListener( this );
- button_cancel.addActionListener( this );
- button_7.addActionListener( this );
- button_8.addActionListener( this );
- button_9.addActionListener( this );
- button_log.addActionListener( this );
- button_divide.addActionListener( this );
- button_4.addActionListener( this );
- button_5.addActionListener( this );
- button_6.addActionListener( this );
- button_tan.addActionListener( this );
- button_multiply.addActionListener( this );
- button_1.addActionListener( this );
- button_2.addActionListener( this );
- button_3.addActionListener( this );
- button_cos.addActionListener( this );
- button_minus.addActionListener( this );
- button_0.addActionListener( this );
- button_point.addActionListener( this );
- button_equal.addActionListener( this );
- button_sin.addActionListener( this );
- button_plus.addActionListener( this );
-
- this.addWindowListener( new WinClose() ); //注册窗口监听器
- this.setVisible( true );
-
- }
-
-
- private void addmyMenu() //菜单的添加
- {
- JMenuBar menubar = new JMenuBar();
- this.add( menubar );
- JMenu m1 = new JMenu( "查看" );
- JMenu m2 = new JMenu( "进制转换" );
-
-
- JMenuItem m1_standardcalculator=new JMenuItem("标准型计算器");
- m1_standardcalculator.addActionListener(this);
- JMenuItem m1_exit = new JMenuItem( "退出" );
- m1_exit.addActionListener( this );
- JMenuItem m2_ejz = new JMenuItem( "二进制" );
- m2_ejz.addActionListener( this );
- JMenuItem m2_ternary=new JMenuItem("三进制");
- m2_ternary.addActionListener(this);
- JMenuItem m2_bjz = new JMenuItem("八进制");
- m2_bjz.addActionListener( this );
- JMenuItem m2_sljz = new JMenuItem("十六进制");
- m2_sljz.addActionListener( this );
-
- JMenu m3 = new JMenu( "帮助" );
- JMenuItem m3_Help = new JMenuItem( "用法" );
- m3_Help.addActionListener( this );
-
-
- // dialog = new Dialog( this, "提示" , true ); //模式窗口
- // dialog.setSize( 240,80 );
- //label_dialog = new Label("", Label.CENTER ); //标签的字符串为空,居中对齐
- // dialog.add( label_dialog );
- //dialog.addWindowListener( this ); //为对话框注册窗口事件监听器
-
- JMenu m4 =new JMenu("关于");
- JMenuItem m4_developer=new JMenuItem("开发者");
-
- m4_developer.addActionListener(this);
- // dialog =new Dialog(this,"",true);
- // dialog.setSize(380,100);
- // label_dialog =new Label("",Label.CENTER);
- // dialog.add(label_dialog);
- //dialog.addWindowListener(this);
-
-
- JMenuItem m4_developmentTime=new JMenuItem("开发时间");
- m4_developmentTime.addActionListener(this);
- dialog =new Dialog(this,"",true); //模式窗口
- dialog.setSize(380,100);
- label_dialog =new Label("",Label.CENTER); //标签的字符串为空,居中对齐
- dialog.add(label_dialog);
- dialog.addWindowListener(this);//为对话框注册窗口事件监听器
-
-
-
- JMenuItem m5_unitconversion = new JMenuItem( "单位转换器" );
- m5_unitconversion .addActionListener( this );
-
- JMenuItem m6_Temperature = new JMenuItem( "温度转换器" );
- m6_Temperature.addActionListener( this );
- m6_Temperature.setBackground(new Color(233,240,247));
- m6_Temperature.setForeground(new Color(30,57,91));
-
- m6_Temperature.setBackground(new Color(233,240,247));
- m6_Temperature.setForeground(new Color(30,57,91));
-
- m6_Temperature.setBackground(new Color(233,240,247));
- m6_Temperature.setForeground(new Color(30,57,91));
-
-
-
-
- m1.add(m1_standardcalculator);
- m1.add(m5_unitconversion);
- m1.add(m6_Temperature);
- m1.add( m1_exit );
-
- menubar.add( m1 );
- m2.add( m2_ejz );
- m2.add(m2_ternary);
- m2.add( m2_bjz );
- m2.add( m2_sljz );
- menubar.add( m2 );
- m3.add( m3_Help );
- menubar.add( m3 );
- m4.add(m4_developer);
- m4.add(m4_developmentTime);
- menubar.add(m4);
-
-
- m6_Temperature.setBackground(new Color(233,240,247));
- m6_Temperature.setForeground(new Color(30,57,91));
-
-
-
- }
-
- public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法
- {
- if(
- e.getSource().equals( button_1 )||e.getSource().equals( button_2 )||
- e.getSource().equals( button_3 )||e.getSource().equals( button_4 )||
- e.getSource().equals( button_5 )|| e.getSource().equals( button_6 )||
- e.getSource().equals( button_7 )|| e.getSource().equals( button_8 )||
- e.getSource().equals( button_9 ) ||e.getSource().equals( button_0 )||
- e.getSource().equals( button_point )||e.getSource().equals( button_plusminus )||
- e.getSource().equals( button_cancel )||e.getSource().equals( button_CE )
- )
- { //非运算符的处理方法
- String input = e.getActionCommand();
-
- if ( start )
- {
- displayField.setText("");
- start = false;
- if( input.equals( "+/-" ) )
- displayField.setText( displayField.getText()+ "-" );
- }
- if( !input.equals( "+/-" ) )
- {
- String str = displayField.getText();
- if( input.equals( "退位") ) //退格键的实现方法
- {
- if( str.length() > 0 )
- displayField.setText( str.substring( 0,str.length() - 1 ) );
- }
- else if( input.equals( "CE" ) ) //清零键的实现方法
- {
- displayField.setText( "0");
- start = true;
- }
- else
- displayField.setText( displayField.getText() + input );
- }
- }
- else if ( e.getActionCommand()=="二进制") //二进制的转换
- {
- int n = Integer.parseInt( displayField.getText() );
- displayField.setText(Integer.toBinaryString(n));
-
- //displayField.setText( Integer.toBinaryString( n ) );
- //SysConvert2 a=new SysConvert2();
- //a.main(null);
- //SysConvert2 convert = new SysConvert2();
- //convert.setVisible(true);
- //this.dispose();
- }
- else if(e.getActionCommand()=="三进制")//三进制的转换
- {
- int n=Integer.parseInt(displayField.getText());
- displayField.setText(Integer.toString(n,3));
- }
- else if ( e.getActionCommand() == "八进制" ) //八进制的转换
- {
- int n = Integer.parseInt( displayField.getText() );
- displayField.setText( Integer.toOctalString( n ) );
- //displayField.setText(Integer.toBinaryString(n));
-
- }
- else if ( e.getActionCommand() == "十六进制" ) //十六进制的转换
- {
- int n = Integer.parseInt( displayField.getText() );
- displayField.setText( Integer.toHexString( n ) );
- }
-
- else if(e.getActionCommand()=="标准型计算器")
- {
- this.dispose();
- StandardCalculator sc=new StandardCalculator();
- sc.main(null);
- }
-
- else if(e.getActionCommand()=="单位转换器")
- {
- this.dispose();
- UnitTransfer un=new UnitTransfer();
- un.main(null);
-
- }
-
- else if(e.getActionCommand()=="温度转换器")
- {
- WenDuChang wd=new WenDuChang();
- this.dispose();
- }
-
- else if ( e.getActionCommand() == "退出" ) //选项中退出的处理方法
- {
- System.exit( 0 );
- }
-
- else if ( e.getActionCommand() == "用法" ) //按下'帮助'菜单栏中用法的处理方法
- {
- label_dialog.setText( "sqrt,exp等键是先输运算符再输数字,先输入数字再点进制转换\n" );
- dialog.setLocation( 400,250 );
- dialog.setVisible( true );
- }
-
- else if(e.getActionCommand()=="开发者")
- {
- label_dialog.setText( "182017331,陈锦贤 182017505, 吴洪缤 182017190,王浩铸" );
- dialog.setLocation( 400,250 );
- dialog.setVisible( true );
- }
-
- else if(e.getActionCommand()=="开发时间")
- {
- label_dialog.setText( "开发于2019年6月17号" );
- dialog.setLocation( 400,250 );
- dialog.setVisible( true );
- }
-
- else //各运算符的识别
- {
- String command = e.getActionCommand();
-
- if( start )
- {
- lastCommand = command;
- }
-
- else
- {
- calculate( Double.parseDouble( displayField.getText() ) );
- lastCommand = command;
- start = true;
- }
- }
- }
-
- public void calculate( double x ) //各运算符的具体运算方法
- {
- double d = 0;
- if ( lastCommand.equals( "+" ) )
- result += x;
-
- else if (lastCommand.equals( "-" ) )
- result -= x;
-
- else if ( lastCommand.equals( "*" ) )
- result *= x;
-
- else if ( lastCommand.equals( "/" ) )
- result /= x;
-
- else if ( lastCommand.equals( "=" ) )
- result = x;
-
- else if ( lastCommand.equals( "sqrt" ) )
- {
- d = Math.sqrt( x );
- result = d;
-
- }
- else if ( lastCommand.equals( "exp" ) )
- {
- d = Math.exp( x );
- result = d;
-
- }
- else if ( lastCommand.equals( "log" ) )
- {
- d = Math.log( x );
- result = d;
-
- }
- else if ( lastCommand.equals( "tan" ) )
- {
- d = Math.tan(x);
- result = d;
-
- }
- else if ( lastCommand.equals( "cos" ) )
- {
- d = Math.cos( x );
- result = d;
-
- }
- else if ( lastCommand.equals( "sin" ) )
- {
- d = Math.sin( x );
- result = d;
-
- }
- displayField.setText( ""+ result );
-
- }
-
- public void windowClosing( WindowEvent e )
- {
- if( e.getSource() == dialog )
- dialog.setVisible( false ); //隐藏对话框
- else
- System.exit( 0 );
- }
-
- public void windowOpened( WindowEvent e ) { }
-
- public void windowActivated( WindowEvent e ) { }
-
- public void windowDeactivated( WindowEvent e ) { }
-
- public void windowClosed( WindowEvent e ) { }
-
- public void windowIconified( WindowEvent e ) { }
-
- public void windowDeiconified( WindowEvent e ) { }
-
- public static void main( String args[] )
- {
- JSQ calculator = new JSQ();
- }
- }
-
- class WinClose implements WindowListener
-
- {
- public void windowClosing( WindowEvent e ) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法
- {
- System.exit( 0 ); //结束程序运行
-
- }
- public void windowOpened( WindowEvent e ){ }
-
- public void windowActivated( WindowEvent e ){}
-
- public void windowDeactivated( WindowEvent e){ }
-
- public void windowClosed( WindowEvent e ){ }
-
- public void windowIconified( WindowEvent e ){ }
-
- public void windowDeiconified( WindowEvent e ){ }
-
- }
-
-
- //第二个类
- package qm;
-
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.math.BigDecimal;
- import javax.swing.*;
- import javax.swing.border.Border;
- import javax.swing.border.LineBorder;
- public class StandardCalculator extends JFrame{
- private JTextField display1,display2,display3;
- private JButton num[],operate[];
- private String name[]={"MC","MR","MS","M+","M-","←","CE","C","±","√","7","8","9","/","%","4","5","6","*","1/x","1","2","3","-","=","0",".","+"};
- private operateNum op1=new operateNum(),op2=new operateNum();//操作数1,操作数2
- private storageField storage=new storageField();//存储区
- private String action="op1";//表示要操作的对象 "op1"操作第一个操作数,"op2"操作第二个操作数
- private String sign="";//运算符,默认为空
- private String screen1,screen2;
- private boolean Disable=false;
- public StandardCalculator()
- {
- super("标准计算器");
- this.setLayout(null);
- this.setSize(328, 424);
- this.setResizable(false);
- this.setLocation(300,200);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- display1=new JTextField(30);
- // this.add(display1);
- // display1.setEditable(true);
- final StandardCalculator a = this;
- JPanel jp=new JPanel(null);
-
- //jp.setBounds(10,15,getWidth()-24,getHeight());
- jp.setBounds(10,15,getWidth()-24,getHeight());
- jp.setBackground(new Color(217,228,241));
- this.getContentPane().setBackground(new Color(217,228,241));
- /**显示屏**/
- display1=new JTextField("");
- display2=new JTextField("0");
- display3=new JTextField("");
- jp.add(display1);
- jp.add(display3);
- jp.add(display2);
- this.add(jp);
- display1.setEnabled(false);
- display2.setEnabled(false);
- display3.setEnabled(false);
- display1.setBounds(0, 0, 200, 34);
- display2.setBounds(20, 20, 180, 34);
- display3.setBounds(0, 20, 30, 34);
-
-
- display1.setHorizontalAlignment(JLabel.RIGHT);
- display2.setHorizontalAlignment(JLabel.RIGHT);
- display3.setHorizontalAlignment(JLabel.CENTER);
- display1.setFont(new Font("宋体",Font.PLAIN,12));
- display2.setFont(new Font("宋体",Font.BOLD,20));
- display3.setFont(new Font("宋体",Font.PLAIN,20));
- display1.setDisabledTextColor(Color.BLACK);
- display2.setDisabledTextColor(Color.BLACK);
- display3.setDisabledTextColor(Color.BLACK);
- display1.setBorder(new LineBorder(new Color(242,247,252)));
- display2.setBorder(new LineBorder(new Color(242,247,252)));
- display3.setBorder(new LineBorder(new Color(242,247,252)));
- display1.setBackground(new Color(242,247,252));
- display2.setBackground(new Color(242,247,252));
- display3.setBackground(new Color(242,247,252));
- /**按钮 35px*29px 28个***/
- int i;
- operate=new JButton[28];
- /**前24个**/
- for(i=0;i<24;i++)
- {
- operate[i]=new JButton(name[i]);
- operate[i].setMargin(new java.awt.Insets(0,0,0,0));
-
- operate[i].setBounds(i%5*(35+7+15), 60+i/5*(29+5+15)+5, 35, 29);
- jp.add(operate[i]);
- }
-
- JButton jb1= new JButton("返回"); //返回复杂计算器
- jb1.setBackground(new Color(233,240,247));
- jb1.setForeground(new Color(30,57,91));
-
- jb1.setVisible(true);
- jb1.setBounds(210, 0, 110, 40);
- jb1.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e) {
- a.setVisible(false);
- JSQ calculator = new JSQ();
-
- }
- });
-
- jp.add(jb1);
-
- //添加按钮
-
- /***=号***/
- operate[i]=new JButton(name[i]);
- operate[i].setMargin(new java.awt.Insets(0,0,0,0));
- operate[i].setBounds(i%5*(35+7+15), 60+i/5*(29+5+15)+5, 35, 29*2+5);
- jp.add(operate[i]);
- i++;
- /***0号***/
- operate[i]=new JButton(name[i]);
- operate[i].setMargin(new java.awt.Insets(0,0,0,0));
- operate[i].setBounds(i%5*(35+7+15), 60+i/5*(29+5+15)+5, 35*2+7, 29);
- jp.add(operate[i]);
- /**前24个**/
-
- for(i=i+1;i<name.length;i++)
- {
- operate[i]=new JButton(name[i]);
- operate[i].setMargin(new java.awt.Insets(0,0,0,0));
- operate[i].setBounds((i+1)%5*(35+7+15), 60+i/5*(29+5+15)+5, 35, 29);
- jp.add(operate[i]);
- }
-
- /**
- * 给按钮注册鼠标监听器,键盘监听器和背景
- */
- mouseAdapter ml=new mouseAdapter();
- keyAdapter kl=new keyAdapter();
-
- //算法的介绍
-
- for(i=0;i<name.length;i++)
- {
- operate[i].addMouseListener(ml);
- operate[i].addKeyListener(kl);
- operate[i].setBackground(new Color(233,240,247));
- operate[i].setForeground(new Color(30,57,91));
- }
- jp.add(display1);
- jp.add(display2);
- jp.add(display3);
- jp.addKeyListener(kl);
- this.add(jp);
- this.setVisible(true);
- }
-
- class mouseAdapter extends MouseAdapter{
- public void mouseClicked(MouseEvent e)
- {
-
- JButton operate=(JButton)e.getSource();
-
-
- if(Disable)//禁用按钮,点击C 恢复计算器
- {
- if(operate.getText()=="C")
- { clear();
- Disable=false;
- }
- else
- return;
- }
- if(operate.getText().equals("MC")){
- mc();
- //return;
-
- }
- if(operate.getText().equals("MR")){
- mr();
- //return;
-
- }
- if(operate.getText().equals("MS")){
- ms();
- //return;
-
- }
- if(operate.getText().equals("M+")){
- mAdd();
- //return;
-
- }
- if(operate.getText().equals("M-")){
- mCut();
- //return;
-
- }
- if(operate.getText().equals("←")){
- cutEnd();
- // return;
-
-
- }
- if(operate.getText().equals("CE")){
- cutNum();
- //return;
-
- }
- if(operate.getText().equals("C")){
- clear();
- //return;
-
- }
- if(operate.getText().equals("±")){
- revolt();
- //return;
-
- }
- if(operate.getText().equals("√")){
- sqrt();
- //return;
-
- }
- if(operate.getText().equals("7")||operate.getText().equals("8")||operate.getText().equals("9")||operate.getText().equals("4")||operate.getText().equals("5")||operate.getText().equals("6")||operate.getText().equals("3")||operate.getText().equals("2")||operate.getText().equals("1")||operate.getText().equals("0")){
- read(Integer.parseInt(operate.getText()));
-
- }
- if(operate.getText().equals("/")){
- divide();
-
- }
- if(operate.getText().equals("%")){
- mo();
-
- }
- if(operate.getText().equals("*")){
- mul();
- }
- if(operate.getText().equals("1/x")){
- inverted();
- }
- if(operate.getText().equals("-")){
- cut();
-
- }
- if(operate.getText().equals("+")){
- add();
- }
- if(operate.getText().equals("=")){
- sum();
- }
- if(operate.getText().equals(".")){
- dot();
-
- }
- // switch(operate.getText())
- // {
- // case "MC":mc();break;
- // case "MR":mr();break;
- // case "MS":ms();break;
- // case "M+":mAdd();break;
- // case "M-":mCut();break;
- // case "←":cutEnd();break;
- // case "CE":cutNum();break;
- // case "C":clear();break;
- // case "±":revolt();break;
- // case "√":sqrt();break;
- // case "7":
- // case "8":
- // case "9":
- // case "4":
- // case "5":
- // case "6":
- // case "3":
- // case "2":
- // case "1":
- // case "0":read(Integer.parseInt(operate.getText()));break;//将按键上的文本转化为Int型
- // case "/":divide();break;
- // case "%":mo();break;
- // case "*":mul();break;
- // case "1/x":inverted();break;
- // case "-":cut();break;
- // case "+":add();break;
- // case "=":sum();break;
- // case ".":dot();break;
- // }
- }
- public void mouseEntered(MouseEvent e)
- {
- ((JButton)e.getSource()).setBackground(new Color(255,211,113));
-
- }
- public void mouseExited(MouseEvent e)
- {
- ((JButton)e.getSource()).setBackground(new Color(233,240,247));
- }
- }
- /*
- * MC 取消存储区,清空存储区数据
- */
- public void mc()
- {
- storage.storageNum=0;
- storage.storageMode=false;
- display3.setText(null);
- }
- /*
- * MR 读取存储器存储的数据
- */
- public void mr()
- {
- op1.value=storage.storageNum;
- screen2=""+op1.value;
- if(op1.value==Math.floor(op1.value))
- screen2=""+(int)op1.value;
- display2.setText(screen2);
- op1.clear=true;
- }
- /*
- * MS 保存数据到存储器
- */
- public void ms()
- {
- storage.storageNum=op1.value;
- display3.setText("M");//屏幕左下角显示M标志
- }
- /*
- * M+ 已经储存的数加上当前计算结果并将和存入存储器
- */
- public void mAdd()
- {
- storage.storageNum=storage.storageNum+op1.value;
- }
- /*
- * M- 已经储存的数减去当前计算结果并将差存入存储器
- */
- public void mCut()
- {
- storage.storageNum=storage.storageNum-op1.value;
- }
- /*
- * ← 输入的数去掉尾数
- *
- */
- public void cutEnd()
- {
- if(action=="op1"&&op1.value!=0)//表示对op1进行操作
- {
- if(op1.isFloat==false)//如果op1为整数
- {
- op1.value=(int)op1.value/10;
- screen2=""+(int)op1.value;
- }
- else{//如果op1为小数
- BigDecimal bd=new BigDecimal(op1.value);
- op1.value=bd.setScale(--op1.dotWei,BigDecimal.ROUND_DOWN).doubleValue();
- screen2=""+op1.value;
- if(op1.dotWei==0)//小数点后数位都去除掉后,变位整数,更新isFloat标记
- op1.isFloat=false;
- }
- }
- else if(action=="op2"&&op2.value!=0)//表示对op2进行操作
- {
- if(op2.isFloat==false)//如果op2位整数
- {
- op2.value=(int)op2.value/10;
- screen2=""+(int)op2.value;
- }
- else{//如果op2为小数
- BigDecimal bd=new BigDecimal(op2.value);
- op2.value=bd.setScale(--op2.dotWei,BigDecimal.ROUND_DOWN ).doubleValue();
- screen2=""+op2.value;
- if(op2.dotWei==0)//小数点后数位都去除掉后,变位整数,更新isFloat标记
- op2.isFloat=false;
- }
- }
- display2.setText(screen2);//输出修改后的操作数
- }
- /*
- * CE 清空当前操作数操作数
- */
- public void cutNum()
- {
- if(action=="op1")
- op1.reset();
- else if(action=="op2")
- op2.reset();
- display2.setText("0");//初始化显示屏2
- }
- /*
- * C 归零 重置计算器
- */
- public void clear()
- {
- op1.reset();
- op2.reset();
- //初始化数据成员
- action="op1";
- sign="";
- //初始化显示屏
- display1.setText("");
- display2.setText("0");
- }
- /*
- * ± 正负号
- */
- public void revolt()
- {
- if(action=="op1")
- {
- op1.value=-op1.value;
- screen2=""+op1.value;
- }
- else if(action=="op2")
- {
- op2.value=-op2.value;
- screen2=""+op2.value;
- }
- display2.setText(screen2);
- }
- /*
- * √ 根号
- */
- public void sqrt()
- {
- double x;//临时变量
- if(action=="op1")
- {
- op1.sqrtedString="sqrt("+op1.value+")";
- op1.value=Math.sqrt(op1.value);
- op1.isSqrted=true;
- x=op1.value;
- }
- else
- {
- op2.sqrtedString="sqrt("+op2.value+")";
- op2.value=Math.sqrt(op2.value);
- op2.isSqrted=true;
- x=op2.value;
- }
- screen2=x+"";
- if(x==Math.floor(x))//如果x为整数
- {
- screen2=(int)x+"";//则将浮点数x先转化为int再转化成字符串
- }
- display2.setText(screen2);
-
- }
- /*
- * 按下数字键
- */
- public void read(int value)
- {
- //display2.setFont(new Font("宋体",Font.BOLD,20));//默认字体大小
- display2.setText(null);//清屏
- if(op1.clear==true)
- op1.reset();
- if(op2.clear==true)
- op2.reset();
- if(action=="op1")//表示输数据给op1
- {
-
- if(op1.isFloat==true)//若op1为浮点数
- {
- int i=1;
- double num=value;
- ++op1.dotWei;
- while(i<=op1.dotWei)
- {
- num*=0.1;
- i++;
- }
- op1.value=op1.value+num;//将新的小数点位添加到操作数op1中
- //因为双精度浮点数 其精度比较高,而我们只需取它的op1.dotWei保存
- op1.value=Double.parseDouble(String.format("%."+op1.dotWei+"f",op1.value));
- //因为双精度浮点数 其精度比较高,而我们只需取它的op1.dotWei显示在屏幕上
- display2.setText(String.format("%."+op1.dotWei+"f", op1.value));
- }
- else//op1为整数
- {
- op1.value=op1.value*10+value;//将新的整数位加倒op1中
- display2.setText((int)op1.value+"");//屏幕输出op1的值
- }
- }
- else if(action=="op2")//表示输数据给op2
- {
- if(op2.isFloat==true)//若op2为浮点数
- {
- int i=1;
- double num=value;
- ++op2.dotWei;
- while(i<=op2.dotWei)
- {
- num*=0.1;
- i++;
- }
- op2.value=op2.value+num;//将新的小数点位添加到操作数op2中
- //因为双精度浮点数 其精度比较高,而我们只需取它的op2.dotWei保存
- op2.value=Double.parseDouble(String.format("%."+op2.dotWei+"f",op2.value));
- //因为双精度浮点数 其精度比较高,而我们只需取它的op2.dotWei显示在屏幕上
- display2.setText(String.format("%."+op2.dotWei+"f", op2.value));
- }
- else//op2为整数
- {
- op2.value=op2.value*10+value;
- display2.setText((int)op2.value+"");
- }
-
- }
- }
- public void divide()
- {
- run("/");
- }
- public void mo()
- {
- run("%");
- }
- public void mul()
- {
- run("*");
- }
- /*
- * 1/x
- */
- public void inverted()
- {
- double num;
- String str;
- if(action=="op1")
- {
- op1.invertedString="1/"+op1.value;//1/x形式字符串
- op1.value=1/op1.value;
- op1.isInverted=true;
- num=op1.value;
- }
- else{
- op2.invertedString="1/"+op2.value;//1/x形式字符串
- op2.value=1/op2.value;
- op1.isInverted=true;
- num=op2.value;
- }
- str=num+"";
- if(str.length()>=16)//计算器屏幕所能显示数据的最大长度
- {
- display2.setFont(new Font("宋体",Font.BOLD,14));//缩小字体输出
- display2.setText(str.substring(0, 16));
- }
- else
- display2.setText(str);
- }
- public void cut()
- {
- run("-");
- }
- public void add()
- {
- run("+");
- }
- public void sum()
- {
- display2.setFont(new Font("宋体",Font.BOLD,20));
- int d1=op1.dotWei,d2=op2.dotWei,i;
- if(sign.equals("+")){
- op1.value=op1.value+op2.value;
-
- }
- if(sign.equals("-")){
- op1.value=op1.value-op2.value;
-
- }
- if(sign.equals("*")){
- op1.value=op1.value*op2.value;
-
- }
- if(sign.equals("/")){
- op1.value=op1.value/op2.value;
-
- }
- if(sign.equals("%")){
- op1.value=op1.value%op2.value;
-
- }
- // switch(sign)
- // { //运算后 结果保存到op1中
- // case "+":op1.value=op1.value+op2.value;break;
- // case "-":op1.value=op1.value-op2.value;break;
- // case "*":op1.value=op1.value*op2.value;break;
- // case "/":op1.value=op1.value/op2.value;break;
- // case "%":op1.value=op1.value%op2.value;break;
- // }
- if(op2.value==0&&sign=="/")//除数为0
- {
- Disable=true;
- display2.setText(op1.value+"");
- display1.setText(null);
- action="op1";
- return ;
- }
- if(op1.value==Math.floor(op1.value))//结果为整数
- {
- display2.setText((int)op1.value+"");
- op1.dotWei=0;
- op1.isFloat=false;
- }
- else{//结果为小数
- String str=op1.value+"";
- //准确控制算术运算结果的精度,加,减,取模运算,小数点后的有效数字最多为max(d1,d2)位
- if(sign.equals("+")||sign.equals("-")||sign.equals("%"))
- {
- i=d1>d2?d1:d2;
- str=op1.value+"";
- str=str.substring(0, str.indexOf(".")+i+1);//取i位输出
- }
- //准确控制算术运算结果的精度,乘法运算,小数点后的有效数字最多为d1+d2位
- else if(sign.equals("*"))
- {
- i=d1+d2;
- BigDecimal bd=new BigDecimal(op1.value);
- op1.value=bd.setScale(i,BigDecimal.ROUND_DOWN ).doubleValue();
- str=op1.value+"";//更新修改后的str
- }
- //结果超过显示数据的最大长度
- if(str.length()>=16)
- {
- display2.setFont(new Font("宋体",Font.BOLD,14));
- str=str.substring(0, 16);
- }
- display2.setText(str);
- op1.dotWei=str.length()-str.indexOf(".")-1;//更新op1w值
- }
-
- display1.setText(null);
- action="op1";
- op1.clear=true;//开始新的表达式运算时,op1要先重置
- op2.clear=true;//开始新的表达式运算时,op2要先重置
- sign="";
- }
- public void dot()
- {
- if(action=="op1")
- op1.isFloat=true;
- else
- op2.isFloat=true;
- display2.setText(display2.getText()+".");
- }
- public void run(String SIGN)
- {
- display2.setFont(new Font("宋体",Font.BOLD,20));
- action="op2";
- int d1=op1.dotWei,d2=op2.dotWei,i;
- if(!sign.equals(""))//检测是否为以为表达式的第一运算
- {
- if(sign.equals("+")){
- op1.value=op1.value+op2.value;
-
- }
- if(sign.equals("-")){
- op1.value=op1.value-op2.value;
-
- }
- if(sign.equals("*")){
- op1.value=op1.value*op2.value;
-
- }
- if(sign.equals("/")){
- op1.value=op1.value/op2.value;
-
- }
- if(sign.equals("%")){
- op1.value=op1.value%op2.value;
-
- }
- // switch(sign)
- // {//运算后 结果保存到op1中
- // case "+":op1.value=op1.value+op2.value;break;
- // case "-":op1.value=op1.value-op2.value;break;
- // case "*":op1.value=op1.value*op2.value;break;
- // case "/":op1.value=op1.value/op2.value;break;
- // case "%":op1.value=op1.value%op2.value;break;
- // }
- }
- String temp=isSpecileHandle();
- if(temp==null)
- temp=display2.getText();//先保存display2文本框里的数据
- if(op2.value==0&&sign=="/")//除数为0
- {
- Disable=true;
- display2.setText(op1.value+"");
- display1.setText(display1.getText()+op1.value);
- }
- if(op1.value==Math.floor(op1.value))//结果为整数
- {
- display2.setText((int)op1.value+"");
- op1.dotWei=0;
- op1.isFloat=false;
- }
- else{
- String str=op1.value+"";
- //准确控制算术运算结果的精度,加,减,取模运算,小数点后的有效数字最多为max(d1,d2)位
- if(sign.equals("+")||sign.equals("-")||sign.equals("%"))
- {
- i=d1>d2?d1:d2;
- BigDecimal bd=new BigDecimal(op1.value);
- op1.value=bd.setScale(i,BigDecimal.ROUND_DOWN ).doubleValue();
- str=op1.value+"";//更新修改后的str
- }
- //准确控制算术运算结果的精度,乘法运算,小数点后的有效数字最多为d1+d2位
- else if(sign.equals("*"))
- {
- i=d1+d2;
- BigDecimal bd=new BigDecimal(op1.value);
- op1.value=bd.setScale(i,BigDecimal.ROUND_DOWN ).doubleValue();
- str=op1.value+"";//更新修改后的str
- }
- //结果超过显示数据的最大长度
- if(str.length()>=16)
- {
- display2.setFont(new Font("宋体",Font.BOLD,14));
- str=str.substring(0, 16);
- }
- display2.setText(str);
- op1.dotWei=str.length()-str.indexOf(".")-1;//每次加完后,如果结果op1的值为小数则更新op1w的值
- }
- sign=SIGN;
- display1.setText(display1.getText()+temp+sign);
- op2.value=op1.value;//运算后,操作数op2默认的值为op1的值
- op2.clear=true;//下一次键入数据,op2要重置
- op1.clear=false;//下一次键入数据,op1不要重置
- }
- /*
- * isSpecileHandle()
- * 操作数是否sqrt()或1/x过,
- * 如果有,则返回"sqrt(x)"或"1/x"字符串
- */
- public String isSpecileHandle()
- {
- String temp=null;
- if(op1.isSqrted)
- {
- temp=op1.sqrtedString;
- op1.isSqrted=false;
- }
- else if(op2.isSqrted)
- {
- temp=op2.sqrtedString;
- op2.isSqrted=false;
- }
- if(op1.isInverted)
- {
- temp=op1.invertedString;
- op1.isInverted=false;
- }
- else if(op2.isInverted)
- {
- temp=op2.invertedString;
- op2.isInverted=false;
- }
- return temp;
- }
- class keyAdapter extends KeyAdapter{
- public void keyPressed(KeyEvent e)
- {
- int keycode=e.getKeyCode();
- if((keycode>=96&&keycode<=105)||(keycode>=48&&keycode<=57))//数字键
- {
- if(keycode>=96)
- keycode-=48;
- switch(keycode)
- {
- case 48:read(0);break;
- case 49:read(1);break;
- case 50:read(2);break;
- case 51:read(3);break;
- case 52:read(4);break;
- case 53:read(5);break;
- case 54:read(6);break;
- case 55:read(7);break;
- case 56:read(8);break;
- case 57:read(9);break;
- }
- }
- //运算符键+ - * / =和. 以及退格键(* =号)
- else if((keycode==110||keycode==46)||(keycode==111||keycode==47)||(keycode==45||keycode==109)||keycode==107||keycode==106||keycode==61||keycode==10||keycode==8)
- {
- if((keycode==110||keycode==46))
- dot();
- else if(keycode==111||keycode==47)
- run("/");
- else if(keycode==45||keycode==109)
- run("-");
- else if(keycode==107)
- run("+");
- else if(keycode==106)
- run("*");
- else if(keycode==61||keycode==10)//=号
- sum();
- else if(keycode==8)
- cutEnd();
- }
- }
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //StandardCalculator sc=new StandardCalculator();
- }
- }
-
-
- //第三个类
-
- package qm;
- public class StandardCalculatorText {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //StandardCalculator sc=new StandardCalculator();
- }
- }
- class operateNum {//操作数类
- public double value;//操作数的实际值
- public int dotWei;//操作数如果是小数,记录小数点后的位数
- public String invertedString;//1/x字符串
- public String sqrtedString;//sqrt(x)字符串
- public boolean isSqrted,isInverted;//做标记是否√,1/x过,用于后续判断
- public boolean clear;//clear为真表示是否重置操作数
- public boolean isFloat;//isFloat为真,表示操作数是小数
- public operateNum()
- {
- value=0;
- dotWei=0;
- sqrtedString=null;
- invertedString=null;
- isSqrted=false;
- isInverted=false;
- clear=false;
- isFloat=false;
- }
- public void reset()//重置操作数
- {
- value=0;
- dotWei=0;
- sqrtedString=null;
- invertedString=null;
- isSqrted=false;
- isInverted=false;
- clear=false;
- isFloat=false;
- }
- }
- class storageField {//存储区
- public double storageNum;//存储区存储的数据
- public boolean storageMode;//是否启动存储区
- public storageField()
- {
- storageNum=0;
- storageMode=false;
- }
- }
-
- //第四个类
- package qm;
- import javax.swing.*;
- import javax.swing.event.*;
- import java.awt.*;
- import java.awt.event.*;
- public class UnitTransfer extends JFrame{
- private final int WIDTH = 324, HEIGHT = 424;//窗口默认的宽度、高度
-
- private JLabel lblInUnit=new JLabel("输入单位");
- private JComboBox cboIn=new JComboBox(new String[]{"", ""});
- private JLabel lblIn=new JLabel("输入数值");
- private JTextField txtIn=new JTextField("10");
-
-
- private JLabel lblOutUnit=new JLabel("输出单位");
- private JLabel lblResult=new JLabel("显示结果");
- private JLabel txtResult=new JLabel("结果");
- private JComboBox cboOut=new JComboBox(new String[]{"", ""});
-
- private JButton btnTrans = new JButton("转换");
- private JButton btnClear = new JButton("清空");
- private JButton btnreturn=new JButton("返回");
-
-
-
-
- private JRadioButton rdLeng = new JRadioButton("长度");
- private JRadioButton rdWeig = new JRadioButton("时间");
- private String [] lengthUnit={"米", "分米", "厘米", "毫米"};
- private String [] timeUnit={"天", "时", "分", "秒"};
-
- public UnitTransfer(){
- super("单位转换器 ");
- this.setSize(WIDTH, HEIGHT);
- this.setLocation( 300,200 );
- this.setResizable(false);
- this.setLayout(null);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- ButtonGroup group = new ButtonGroup();
- group.add(rdLeng);
- group.add(rdWeig);
- this.getContentPane().add(rdLeng);
- this.getContentPane().add(rdWeig);
- this.getContentPane().add(btnTrans);
- this.getContentPane().add(btnClear);
- this.getContentPane().add(btnreturn);
- this.getContentPane().add(lblIn);
- this.getContentPane().add(txtIn);
- this.getContentPane().add(lblInUnit);
- this.getContentPane().add(cboIn);
-
- this.getContentPane().add(lblResult);
- this.getContentPane().add(txtResult);
- this.getContentPane().add(lblOutUnit);
- this.getContentPane().add(cboOut);
-
-
- txtIn.setFont(new Font("宋体",Font.BOLD,20));
- lblInUnit.setFont(new Font("宋体",Font.BOLD,15));
- lblIn.setFont(new Font("宋体",Font.BOLD,15));
- lblOutUnit.setFont(new Font("宋体",Font.BOLD,15));
- lblResult.setFont(new Font("宋体",Font.BOLD,15));
- btnTrans.setFont(new Font("宋体",Font.BOLD,15));
- btnClear.setFont(new Font("宋体",Font.BOLD,15));
-
- btnreturn.setBackground(new Color(233,240,247));
- btnreturn.setForeground(new Color(30,57,91));
- btnClear.setBackground(new Color(233,240,247));
- btnClear.setForeground(new Color(30,57,91));
- btnTrans.setBackground(new Color(233,240,247));
- btnTrans.setForeground(new Color(30,57,91));
- cboIn.setBackground(new Color(233,240,247));
- cboIn.setForeground(new Color(30,57,91));
- btnreturn.setBackground(new Color(233,240,247));
- cboOut.setForeground(new Color(30,57,91));
-
- this.setVisible(true);
- this.doLayout();
- btnTrans.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- doConvert();
- }
- });
- btnClear.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- txtIn.setText("0");
- txtResult.setText("0");
- }
- });
-
- btnreturn.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e){
-
- JSQ calculator = new JSQ();
- boolean flase = false;
- setVisible(flase);
- }
- });
- rdLeng.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- cboIn.setModel(new DefaultComboBoxModel(lengthUnit));
- cboOut.setModel(new DefaultComboBoxModel(lengthUnit));
- }
- });
- rdWeig.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- cboIn.setModel(new DefaultComboBoxModel(timeUnit));
- cboOut.setModel(new DefaultComboBoxModel(timeUnit));
- }
- });
- rdLeng.setSelected(true);
- cboIn.setModel(new DefaultComboBoxModel(lengthUnit));
- cboOut.setModel(new DefaultComboBoxModel(timeUnit));
- }
- final int offX=100;
- public void doLayout(){
- super.doLayout();
-
- rdLeng.setBounds(offX, 15, 60, 20);
- rdWeig.setBounds(rdLeng.getX()+rdLeng.getWidth()+5, 15, 60, 20);
-
- lblInUnit.setBounds(offX, rdLeng.getY()+rdLeng.getHeight()+20, 80, 20);
- cboIn.setBounds(lblInUnit.getX()+lblInUnit.getWidth()+5, lblInUnit.getY(), 80, 20);
- lblIn.setBounds(offX, lblInUnit.getY()+lblInUnit.getHeight()+5, 80, 20);
- txtIn.setBounds(lblIn.getX()+lblIn.getWidth()+5, lblIn.getY(), 80, 20);
-
- lblOutUnit.setBounds(offX, lblIn.getY()+lblIn.getHeight()+30, 80, 20);
- cboOut.setBounds(lblOutUnit.getX()+lblOutUnit.getWidth()+5, lblOutUnit.getY(), 80, 20);
- lblResult.setBounds(offX, cboOut.getY()+cboOut.getHeight()+5, 80, 20);
- txtResult.setBounds(lblResult.getX()+lblResult.getWidth()+5, lblResult.getY(), 100, 20);
-
- int w=getWidth ();
- int x=(w-70*2-5)/2;//水平居中
- btnTrans.setBounds(x, lblResult.getY()+lblResult.getHeight()+30, 70, 25);
- btnClear.setBounds(btnTrans.getX()+btnTrans.getWidth()+3, btnTrans.getY(), 70, 25);
- //btnreturn.setBounds(x, lblResult.getY()+lblResult.getHeight()+80, 70, 65);
- btnreturn.setBounds(15,12, 70, 25);
-
-
-
- }
- public void doConvert(){
- double v=0;
- try{
- v= Double.parseDouble(txtIn.getText());
- }catch(Exception ex){
- txtIn.setText("0");
- return;
- }
- //"米", "分米", "厘米", "毫米"
- if(rdLeng.isSelected()){
- switch(cboIn.getSelectedIndex()){
- case 0:
- break;
- case 1:
- v=v/10;
- break;
- case 2:
- v=v/100;
- break;
- case 3:
- v=v/1000;
- break;
- default:
- return;
- }
- //v 现在是标准单位:米
- switch(cboOut.getSelectedIndex()){
- case 0:
- break;
- case 1:
- v=v*10;
- break;
- case 2:
- v=v*100;
- break;
- case 3:
- v=v*1000;
- break;
- default:
- return;
- }
- if(v<0.01){
- txtResult.setText(String.format("%2.8f", v));
- }else{
- txtResult.setText(String.format("%2.2f", v));
- }
- }else{
- //"天", "时", "分", "秒"
- switch(cboIn.getSelectedIndex()){
- case 0:
- v=v*24;
- break;
- case 1:
- break;
- case 2:
- v=v/60;
- break;
- case 3:
- v=v/3600;
- break;
- default:
- return;
- }
- //v 现在是标准单位:小时
- switch(cboOut.getSelectedIndex()){
- case 0:
- v=v/24;
- break;
- case 1:
- break;
- case 2:
- v=v*60;
- break;
- case 3:
- v=v*3600;
- break;
- default:
- return;
- }
- if(v<0.01){
- txtResult.setText(String.format("%2.8f", v));
- }else{
- txtResult.setText(String.format("%2.8f", v));
- }
- }
- }
-
- public static void main(String[] args){
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- //UnitTransfer un= new UnitTransfer();
- }
- });
- }
- }
-
- //最后一个类
- package qm;
-
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- //import java.awt.Button;
- import java.text.DecimalFormat;
-
-
- public class WenDuChang extends JFrame implements ActionListener{
- private JTextField textField;
- private JTextField textField_1;
- private JLabel label;
- private JLabel label_1;
- private JLabel label_2;
- private JRadioButton[] radioButton;
- private JButton button;
- private JButton button_1;
- private ButtonGroup bg;
-
- public static void main( String args[] )
- {
- //WenDuChang wd=new WenDuChang();
- }
-
- public WenDuChang() {
- //获取你的屏幕的宽和高
- //int width = Toolkit.getDefaultToolkit().getScreenSize().width;
- // int height = Toolkit.getDefaultToolkit().getScreenSize().height;
- // setLocation(width/2-200, height/2-150);
-
-
- setTitle("温度转换器");
- getContentPane().setLayout(null);
-
- textField = new JTextField();//摄氏温度
- textField.setText("0.0");
- textField.setFont(new Font("宋体",Font.BOLD,20));
- //textField.setBounds(50, 63, 84, 27);
- textField.setBounds(170, 33, 104, 37);
- getContentPane().add(textField);
- textField.setColumns(10);
-
- label = new JLabel("摄氏温度");
- //label.setBounds(137,69,54,15);
- label.setBounds(60,35,104,37);
- getContentPane().add(label);
-
- label_1 = new JLabel("<<==>>");
- //label_1.setBounds(201, 69, 54, 15);
- label_1.setBounds(130, 84, 104, 45);
- getContentPane().add(label_1);
-
- textField_1 = new JTextField();//华氏温度
- textField_1.setText("0.0");
- textField_1.setFont(new Font("宋体",Font.BOLD,20));
- //textField_1.setBounds(, 66, 90, 24);
- textField_1.setBounds(170, 140, 104, 37);
- getContentPane().add(textField_1);
- textField_1.setColumns(10);
-
- label_2 = new JLabel("华氏温度");
- //label_2.setBounds(323, 69, 104, 37);
- label_2.setBounds(60, 150, 54, 15);
- getContentPane().add(label_2);
-
- radioButton = new JRadioButton[2];
- radioButton[0] = new JRadioButton("摄氏转华氏",true);
- //radioButton[0].setBounds(100, 142, 121, 23);
- radioButton[0].setBounds(55, 210, 121, 23);
- getContentPane().add(radioButton[0]);
-
- radioButton[1] = new JRadioButton("华氏转摄氏");
- //radioButton[1].setBounds(223, 142, 121, 23);
- radioButton[1].setBounds(180, 210, 121, 23);
- getContentPane().add(radioButton[1]);
-
-
- bg=new ButtonGroup();
- bg.add(radioButton[0]);
- bg.add(radioButton[1]);
-
-
- button = new JButton("温度转化");
- //button.setBounds(100, 196, 93, 23);
- button.setBounds(50, 270, 93, 23);
- button.setBackground(new Color(233,240,247));
- button.setForeground(new Color(30,57,91));
-
- button.addActionListener(this);
- getContentPane().add(button);
-
- button_1 = new JButton("返回");
- // button_1.setBounds(237,196,93,23);
- button_1.setBounds(180,270,93,23);
- button_1.setBackground(new Color(233,240,247));
- button_1.setForeground(new Color(30,57,91));
-
-
- button_1.addActionListener(this);
- getContentPane().add(button_1);
-
- //setSize(450, 300);
- this.setLocation( 300,200 );
- this.setSize( 328,424);
- this.setResizable( true );
- this.setResizable(false);
-
- setVisible(true);
- }
-
-
- //用于温度转换的方法-----业务处理
- public String WenDuChang(final double tc,final double tf,boolean flag){
- double wdc=0.0;
- //小数格式化,引号中的0.000表示保留小数点后二位(第四位四舍五入)
- DecimalFormat df = new DecimalFormat("0.00");
-
- String str;
- if(flag){
- wdc=9*(tc-10)/5+50; //摄氏温度转化为华氏温度
- }
- else{
- wdc=5*(tf-50)/9+10; //华氏温度转化为摄氏温度
- }
- str=df.format(wdc);
- return str;
- }
-
-
-
- @Override
- public void actionPerformed(ActionEvent e) {
- double tc = Double.parseDouble(textField.getText().trim());
- double tf = Double.parseDouble(textField_1.getText().trim());
-
- if(e.getSource()==button){
- //System.out.println("按钮被选中.....");
- if(radioButton[0].isSelected()){//判断radioButton是否被选中
- textField_1.setText(WenDuChang(tc,tf,true));
- }
- if(radioButton[1].isSelected()){
- textField.setText(WenDuChang(tc,tf,false));
-
- }
-
- }
- if(e.getSource()==button_1){
- //System.exit(0);
- JSQ calculator = new JSQ();
- this.dispose();
- }
-
- }
- }
-
-
-
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。