实例介绍
【实例简介】
【实例截图】
【核心代码】
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class calculator 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 calculator() //构造方法设置布局、为按钮注册事件监听器 { super( "My Calculator" ); this.setLocation( 350,150 ); this.setSize( 450,400 ); this.setResizable( true ); this.setLayout( new GridLayout( 7,1 ) ); this.addmyMenu(); //调用成员方法添加菜单 displayField = new JTextField( 30 ); 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_plusminus = new JButton( " /-" ); button_exp = new JButton( "exp" );//底数e的n次幂 button_CE = new JButton( "退位"); button_cancel = new JButton( "c" );//清除 JPanel panel2 = new JPanel(); panel2.setLayout( new GridLayout( 1,5,4,4 ) ); this.add( panel2 ); button_7 = new JButton( "7" ); button_8 = new JButton( "8" ); button_9 = new JButton( "9" ); button_log = new JButton( "log" );//对数 button_divide = new JButton( "/" );//除 JPanel panel3 = new JPanel(); panel3.setLayout( new GridLayout(1,5,4,4) ); this.add( panel3 ); button_4 = new JButton( "4" ); button_5 = new JButton( "5" ); button_6 = new JButton( "6" ); button_tan = new JButton( "tan" );//正切 button_multiply = new JButton( "*" );//乘法 JPanel panel4=new JPanel(); panel4.setLayout( new GridLayout( 1,5,4,4 ) ); this.add(panel4); button_1 = new JButton( "1" ); button_2 = new JButton( "2" ); button_3 = new JButton( "3" ); button_cos = new JButton( "cos");//余弦 button_minus = new JButton( "-" ); JPanel panel5 = new JPanel(); panel5.setLayout( new GridLayout( 1,5,4,4 ) ); this.add( panel5 ); button_0 = new JButton( "0" ); button_point=new JButton( "." ); button_equal = new JButton( "=" ); button_sin = new JButton( "sin" );//正弦 button_plus = new JButton( " " ); 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_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_exit = new JMenuItem( "退出" ); m1_exit.addActionListener( this ); JMenuItem m2_ejz = new JMenuItem( "二进制" ); m2_ejz.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 ); //为对话框注册窗口事件监听器 m1.add( m1_exit ); menubar.add( m1 ); m2.add( m2_ejz ); m2.add( m2_bjz ); m2.add( m2_sljz ); menubar.add( m2 ); m3.add( m3_Help ); menubar.add( m3 ); } 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( "C" ) ) //清零键的实现方法 { 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 ) ); } else if ( e.getActionCommand() == "八进制" ) //八进制的转换 { int n = Integer.parseInt( displayField.getText() ); displayField.setText( Integer.toOctalString( n ) ); } else if ( e.getActionCommand() == "十六进制" ) //十六进制的转换 { int n = Integer.parseInt( displayField.getText() ); displayField.setText( Integer.toHexString( n ) ); } 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 //各运算符的识别 { 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[] ) { calculator calculator = new calculator(); } } 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 ){ } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论