收藏 分销(赏)

JAVA项目实战(计算器).docx

上传人:人****来 文档编号:4552631 上传时间:2024-09-29 格式:DOCX 页数:28 大小:32.39KB 下载积分:10 金币
下载 相关 举报
JAVA项目实战(计算器).docx_第1页
第1页 / 共28页
JAVA项目实战(计算器).docx_第2页
第2页 / 共28页


点击查看更多>>
资源描述
JAVA项目实战 计算器 一、开发环境 Eclipse集成开发环境。 二、实现功能 加、减、乘、除的整数运算。 三、运用的知识点 1、JFrame窗体的使用 2、JButton按钮的使用 3、JTe*tFiled输入文本框的使用 4、Container容器的使用 5、监听事件的使用 6、内部类 7、If语句 8、Switch case 语句 9、包 10、包的引用 11、数据类型之间的转换(String转Int转Double Double.valueOf ( String str ), Interger.valueOf(Stringstr)) 四、重点知识的讲解 常用窗体 窗体作为Swing应用程序中组件的承载体,处于非常重要的位置。 Swing中常用的窗体包括JFrame和JDialog,本节将着重讲解这两个窗体的使用方法。 1、 JFrame 窗体 JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器。在开发应用程序时可以通过继承java.swing.IFrame 类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件。由于该窗体继承了 JFrame类,所以它拥有“最大化”、“最小化”和关闭等按钮。下面将详细讲解JFrame窗体在Java应用程序中的使用方法。JFrame在程序中的语法格式如下: JFrame jf=new JFrame(title):Container container=jf getContent Pane0; 参数含义如下:jf : JFrame类的对象 container:Container 类的对象,可以使用JFrame对象调用getContentPane ()方法获取。读者大致应该有这样一个概念,Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane ()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常,这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add ()方法进行设置。例如:container.add(new JButton(" 按钮”)); //Button按钮组件在容器添加组件后,也可以使用Container类的 remove()方法将这些组件从容器中删除。例如 container remove(new JButton(" 按钮”));下面的实例中实现了 JFrame对象创建一个窗体,并在其中添加一个组件。【例】在项目中创建E*amplel 类,该类继承JFrame类成为窗体类,在该类中创建标签组件,并添加到窗体界面中。 import java.awt.Color; import java.awt.Container; import java*.swing.JFrame; import java*.swing.JLabel; import java*.swing.SwingConstants; import java*.swing.WindowConstants; publicclass E*amplel*tends JFrame { 〃定义一个类继承 JFrame 类 public E*ample1(String titile ){〃定义一个构造方法,构造一个窗体。 JFrame jf = new JFrame( titile ); // 实例化一个 JFrame 对象 Container container = jf.getContentPane(); //获取一个容器 JLabel jl = new JLabel("这是一个 JFrame 窗体");//实例化一个 JLabel 对象 //使标签上的文字居中 jl.setHorizontalAlignment(SwingConstants. CENTER ); container .add( jl);//将标签添加到容器中 container .setBackground(Color. WHITE);//设置容器的背景颜色 jf.setVisible( true );//设置窗体可视 jf.setSize(4, 4); //设置窗体大小 〃设置窗体关闭方式 jf.setDefaultCloseOperation(WindowConstants. E*IT_ON_CLOSE ); } publicstaticvoid main(String[] args ) (//在主方法中构造一个窗体 new E*ample1("创建一个 JFrame 窗体"); } } 运行本实例程序,结果如图所示。 在例中,E*atplel 类继承了 JFrame 类,在 E*ample1(String titile)方法中实例化JFrmne对象。JFrame类的常用构造方法包括以下两种形式 public JFrame() 。 public JFrame(String title). JFrame类中的两种构造方法分别为无参的构造方法与有参的构造方法, 第1种形式的构造方法可以创建一个初始不可见、没有标题的新窗体;第2 种形式的构造方法在实例化该JFrame对象时可以创建一个不可见但具有标题的窗体。可以使用JFrme对像调用show()方法使窗体可见,但是该方法早已 被新版JDK所弃用,通常使用setVisible(true)方法使窗体可见。 同时可以使用setSize(int * , int y)方法设置窗体大小,其中*与y变量分别代表窗体的宽与高。 创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法关闭窗体°Java为窗体关闭提供了多种 方式,常用的有以下4种 1 、 DO_NOTHING_ON_CLOSE 。 2 、 DISPOSE_ON一CLOSE 。 3 、 HIDE_ON一CLOSE 。 4 、 E*TT_ON一CLOSE 。 第1种窗体退出方式代表什么都不做就将窗体关闭;第2种退出方式则代表任何注册监听程序对象后会自动隐藏并释放窗体;第3种方式表示隐藏窗的默认窗关闭;第4种退出方式表示退出应用程序默认窗关闭。 2、JDialog 窗体 JDialog窗体是Swing组件中的对话框,它继承了 AWT组件java.awtDialog 类。 JDialog窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样°JDialog窗体实质上就是另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。 在应用程序中创建JDialog窗体需要实例化JDialog类,通常使用以下几个JDialog类的构造方法。 public JDialog():创建一个没有标题和父窗体的对话框。 public JDialog(Frame f): 创建一个指定父窗体的对话框,但该窗体没有标题。 public JDialog(Frame f, boolean model):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。 public JDialog(Frame f , String title):创建一个指定标题和父窗体的对话框。 public JDialog(Frame f String titleboolean model):创建一个 指定标题、窗体和模式的对话框。 下面来看一个实例,该实例主要实现单击JFrme窗体中的按钮后,弹出一个对话框窗体。 【例】在项目中创建MyJDialog类,该类继承JDialog窗体,并在窗中添加按钮,当用户点击该按钮后,将弹出一个对话框窗体。本实例代码如下: import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java*.swing.JButton; import java*.swing.JDialog; import java*.swing.JFrame; import java*.swing.JLabel; import java*.swing.SwingConstants; publicclass MyFramee*tends JFrame{ public MyFrame(){ Container container = getContentPane();〃创建一个容器 container .setLayout( null ); JLabel jl = new JLabel("这是一个JFrame窗体");//在窗体中设置标签〃使标签上的文字居中 jl .setHorizontalAlignment(SwingConstants. CENTER ); container .add( jl); JButton bl = new JButton("弹出对话框");//实例化一个按钮bl.setBounds(10, 10, 1, 21); container .add( bl); 〃将按钮添加到容器中setSize(4,4);〃设置窗体的大小 bl.addActionListener( new ActionListener(){ 〃为按钮添加鼠标点击事件@Override publicvoid actionPerformed(ActionEvent e) { 〃使MyDialog窗体可见 new MyDialog(MyFrame. this).setVisible( true ); } }); } publicstaticvoid main(String[] args ) { new MyFrame().setVisible( true);; } } class MyDialoge*tends JDialog{ public MyDialog(MyFrame frame ){ 〃实例化一个JDialog对象,指定对话框的父窗体、窗体标题和类型 super (frame ,"第一个 Dialog 窗体",true ); Container container = getContentPane(); 〃创建一个容器 container .add( new JLabel("这是一个对话框"));//在容器中添加标签setBounds(120,120,1,1);//设置对话框的大小 } } 运行本实例,结果如图所示。 在本实例中,为了使对话框在父窗体弹出,定义了一个JFrame窗体,首先在该窗体中定义一个按钮,然后为此按钮添加一个鼠标单击监听事件,这里使用new MyJDialog().setVisible(true) 语句使对话框窗体可见,这样就实现了用户单击该按钮后弹出对话框的功能。在MyJDialog类中,由于它继 承了 JDialog类,所以可以在构造方法中使用super关键字调用JDialog构 String 造方法。在这里使用了public JDialog(Frame ftitle, boolean model)这种形式的构造方法,相应地设置了自定义的 JFrame窗体以及对话框的标题和窗体类型。本实例代码中可以看到, JDialog窗体与JFrame窗体形式基本相同,甚至在设置窗体的特性时调用的方法名称都基本相同,如设置窗体大小、窗体关闭状态等。 计算器 package com.rakey.ui; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java*.swing.JButton; import java*.swing.JFrame; import java*.swing.JTe*tField; import java*.swing.WindowConstants; publicclass UI ( private JButton clear ; //清除按钮(AC ) private JButton backspace ; // 退格键 private JButton zhengfuhao ; // +/-键 private JButton chuhao ; // 除号 private JButton b_7;// 按键 7 private JButton b_8;// 按键 8 private JButton b_9;// 按键 7 private JButton b_cheng ; // 乘号键 private JButton b_4;// 按键 4 private JButton b_5;// 按键 5 private JButton b_6;// 按键 6 private JButton b_jian ; //减号键 private JButton b_1;// 按键 1 private JButton b_2;// 按键 2 private JButton b_3; // 按键 3 private JButton b_jia ; //加号键 private JButton b_0; // 按键 0 private JButton b_dian ; // 按键. private JButton b_deng ; // 按键= private JTe*tField display ; public String integer ; public UI() ( // 1:新建一个JFrame对象为f JFrame jf = new JFrame("计算器"); // 2:设置布局 jf.setLayout( null); // 3:得到一个容器container Container container = jf.getContentPane(); //改变容器(container)的背景颜色 container .setBackground(Color. YELLOW); //新建一个JTe*tField对象 display = new JTe*tField( "0" ); //设置JTe*tField在container当中的位置和JTe*tField的宽度,高度 display .setBounds(10, 10, 310, 1); //设置字体的大小和字体 display .setFont( new Font("楷体",Font. BOLD, 40)); //设置字体的颜色 display .setForeground( new Color(255, 0, 0)); //设置字体的显示位置(从最右边开始显示) display .setHorizontalAlignment(JTe*tField. RIGHT ); //把JTe*tField放到container容器当中 container .add(display ); //新建一个JButton对象 clear = new JButton( "AC" ); //设置JButton在container当中的位置和JButton的宽度,高度 clear .setBounds(10, 115, 70, 40); //把JButton放到container容器当中container .add( clear ); clear .addActionListener( new Click()); //新建一个JButton对象 backspace = new JButton( " — "); //设置JButton在container当中的位置和JButton的宽度,高度backspace .setBounds(90, 115, 70, 40); //把JButton放到container容器当中 container .add( backspace ); backspace .addActionListener( new Click()); //新建一个JButton对象 zhengfuhao = new JButton( "+/-"); //设置JButton在container当中的位置和JButton的宽度,高度zhengfuhao .setBounds(170, 115, 70, 40); //把JButton放到container容器当中container .add( zhengfuhao ); zhengfuhao .addActionListener( new Click()); //新建一个JButton对象 chuhao = new JButton( ":”); //设置JButton在container当中的位置和JButton的宽度,高度chuhao .setBounds(250, 115, 70, 40); //把JButton放到container容器当中 container .add( chuhao ); chuhao .addActionListener( new Click()); //新建一个JButton对象 b_7 = new JButton( "7"); //设置JButton在container当中的位置和JButton的宽度,高度b_7.setBounds(10, 165, 70, 40); //把JButton放到container容器当中 container .add( b_7); b_7 .addActionListener( new Click()); //新建一个JButton对象 b_8 = new JButton( "8"); //设置JButton在container当中的位置和JButton的宽度,高度 b_8 .setBounds(90, 165, 70, 40); // 把 JButton 放到 container container .add( b_8); b_8 .addActionListener( new //新建一个JButton对象 b_9 = new JButton( "9"); // 设置 JButton 在 container b_9 .setBounds(170, 165, 70, // 把 JButton 放到 container container .add( b_9); b_9 .addActionListener( new //新建一个JButton对象 b_cheng = new JButton( " x // 设置 JButton 在 container b_cheng .setBounds(250, 165, // 把 JButton 放到 container 容器当中 Click()); 当中的位置和JButton的宽度,高度 40); 容器当中 Click()); ); 当中的位置和JButton的宽度,高度 70, 40); 容器当中 container .add(b_cheng ); b_cheng .addActionListener( new Click()); //新建一个JButton对象 b_4 = new JButton( "4"); //设置JButton在container当中的位置和JButton的宽度,高度 b_4 .setBounds(10, 215, 70, 40); //把JButton放到container容器当中 container .add( b_4); b_4 .addActionListener( new Click()); //新建一个JButton对象 b_5 = new JButton( "5"); //设置JButton在container当中的位置和JButton的宽度,高度 b_5 .setBounds(90, 215, 70, 40); //把JButton放到container容器当中 container .add( b_5); b_5 .addActionListener( new Click()); //新建一个JButton对象b_6 = new JButton( "6"); //设置JButton在container当中的位置和JButton的宽度,高度 b_6 .setBounds(170, 215, 70, 40); //把JButton放到container容器当中 container .add( b_6); b_6 .addActionListener( new Click()); //新建一个JButton对象 b_jian = new JButton( "-"); //设置JButton在container当中的位置和JButton的宽度,高度 b_jian .setBounds(250, 215, 70, 40); //把JButton放到container容器当中 container .add(b_jian ); b_jian .addActionListener( new Click()); //新建一个JButton对象 b_1 = new JButton( "1"); //设置JButton在container当中的位置和JButton的宽度,高度b_1 .setBounds(10, 265, 70, 40); //把JButton放到container容器当中 container .add( b_1); b_1 .addActionListener( new Click()); //新建一个JButton对象 b_2 = new JButton( "2"); //设置JButton在container当中的位置和JButton的宽度,高度b_2 .setBounds(90, 265, 70, 40); //把JButton放到container容器当中 container .add( b_2); b_2 .addActionListener( new Click()); //新建一个JButton对象 b_3 = new JButton( "3"); //设置JButton在container当中的位置和JButton的宽度,高度b_3.setBounds(170, 265, 70, 40); . //把JButton放到container容器当中 container .add( b_3); b_3 .addActionListener( new Click()); //新建一个JButton对象 b_jia = new JButton( " + "); //设置JButton在container当中的位置和JButton的宽度,高度 b_jia .setBounds(250, 265, 70, 40); //把JButton放到container容器当中 container .add(b_jia); b_jia .addActionListener( new Click()); //新建一个JButton对象 b_0 = new JButton( "0"); //设置JButton在container当中的位置和JButton的宽度,高度 b_0.setBounds(10, 315, 150, 40); //把JButton放到container容器当中container .add( b_0); b_0.addActionListener( new Click()); //新建一个JButton对象 b_dian = new JButton( "."); //设置JButton在container当中的位置和JButton的宽度,高度 b_dian .setBounds(170, 315, 70, 40); //把JButton放到container容器当中 container .add(b_dian ); b_dian .addActionListener( new Click()); //新建一个JButton对象 b_deng = new JButton("="); //设置JButton在container当中的位置和JButton的宽度,高度 b_deng .setBounds(250, 315, 70, 40); //把JButton放到container容器当中 container .add(b_deng ); b_deng .addActionListener( new Click()); //使该窗体可见(false:不可见,true :可见) jf.setVisible( true); //设置窗体的大小 jf.setSize(345, 4); //关闭窗体 jf.setDefaultCloseOperation(WindowConstants.E*IT_ON_CLOSE ); } Stringshu_1="0";//保存输入数据 Stringshu_2="0";//保存输入数据 Stringfuhao="0";//存放计算符号 /** * 类名:Click *功能:监听各个按键是否按下,处理各个按键按下的内容和相关的功能 * 实现:ActionListener 接 *作者:饶凌云 */ class Click implements ActionListener { ^Override publicvoid actionPerformed(ActionEvent e) ( /*判断输入的数据是否大于9位,如果大于9位数,就会显示”最多输入9个字符"*/ if (display .getTe*t().length() >= 9) ( display .setTe*t(""); display .setTe*t("最多输入9个字符"); return ; } /*清除按钮,如果该按键按下后,显示框的内容就会清零*/ if (e.getSource() == clear) ( display .setTe*t( "0"); } elseif (e.getSource() ==b_1) ( if (display .getTe*t().equals( "0")) ( display .setTe*t( "1"); return ; display .setTe*t( display .getTe*t() + "1"); } elseif (e.getSource() ==b_2) ( // display.setTe*t("2"); if (display .getTe*t().equals( "0")) ( display .setTe*t( "2"); return ; } display .setTe*t( display .getTe*t() + "2"); } elseif (e.getSource() ==b_3) ( if (display .getTe*t().equals( "0")) ( display .setTe*t( "3"); return ; } display .setTe*t( display .getTe*t() + "3"); } elseif (e.getSource() ==b_4) ( if (display .getTe*t().equals( "4")) ( display .setTe*t( "1"); return } display .setTe*t( display .getTe*t() + "4"); } elseif (e.getSource() ==b_5) ( if (display .getTe*t().equals( "5")) ( display .setTe*t( "1"); return ; } display .setTe*t( display .getTe*t() + "5"); } elseif (e.getSource() ==b_6) ( if (display .getTe*t().equals( "6")) ( display .setTe*t( "1"); return ; } display .setTe*t( display .getTe*t() + "6"); } elseif (e.getSource() ==b_7) ( if (display .getTe*t().equals( "7")) (display .setTe*t( "1"); return } display .setTe*t( display .getTe*t() + "7"); } elseif (e.getSource() ==b_8) ( if (display .getTe*t().equals( "8")) (display .setTe*t( "1"); return ; } display .setTe*t( display .getTe*t() + "8"); } elseif (e.getSource() ==b_9) ( if (display .getTe*t().equals( "9")) (display .setTe*t( "1"); return ; display .setTe*t( display .getTe*t() + "9"); } elseif (e.getSource() ==b_0) ( if (display .getTe*t().equals( "0")) (display .setTe*t( "0"); return ; } display .setTe*t( display .getTe*t() + "0"); } elseif (e.getSource() == b_deng ) (shu_2 = display .getTe*t(); display .setTe*t(""); int shu1 int shu2 ; shu1 = Integer. valueOf (shu_1); shu2 = Integer. valueOf (shu_2); switch (fuhao) ( shul += shu2 break case "x " shul *= shu2 break case "-" shul -= shu2 break case ":" shul /= shu2 break } display .setTe*t(String. valueOf (shul)); shu_1 = "0" shu_2 = "0" } elseif (e.getSource() == b_dian) (display .setTe*t("."); } elseif (e.getSource() == b_jia) (shu_1 = display .getTe*t(); display .setTe*t( "0");fuhao = "+" } elseif (e.getSource() == chuhao ) (shu_1 = display .getTe*t(); display .setTe*t( "0");fuhao =":" } elseif (e.getSource() == b_cheng ) (shu_1 = display .getTe*t(); display .setTe*t( "0");fuhao = "x " } elseif (e.getSource() == b_jian) (shu_1 = display .getTe*t(); display .setTe*t( "0"); fuhao ="-" } } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服