JAVA项目实战--------------计算器一、开发环境Eclipse集成开发环境。二、实现功能加、减、乘、除的整数运算。三、运用的知识点1、JFrame窗体的使用2、JButton按钮的使用3、JTextFiled输入文本框的使用4、Container容器的使用5、监听事件的使用6、内部类7、If语句8、Switchcase语句9、包10、包的引用11、数据类型之间的转换(String转Int转DoubleDouble.valueOf(Stringstr),Interger.valueOf(Stringstr))四、重点知识的讲解常用窗体窗体作为Swing应用程序中组件的承载体,处于非常重要的位置。Swing中常用的窗体包括JFrame和JDialog,本节将着重讲解这两个窗体的使用方法。1、JFrame窗体JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器。在开发应用程序时可以通过继承java.swing.IFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件。由于该窗体继承了JFrame类,所以它拥有“最大化”、“最小化”和关闭等按钮。下面将详细讲解JFrame窗体在Java应用程序中的使用方法。JFrame在程序中的语法格式如下:JFramejf=newJFrame(title):Containercontainer=jfgetContentPane0;参数含义如下:jf:JFrame类的对象container:Container类的对象,可以使用JFrame对象调用getContentPane()方法获取。读者大致应该有这样一个概念,Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常,这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。例如:container.add(newJButton(按钮”));//Button按钮组件在容器添加组件后,也可以使用Container类的remove()方法将这些组件从容器中删除。例如containerremove(newJButton(按钮”));下面的实例中实现了JFrame对象创建一个窗体,并在其中添加一个组件。【例】在项目中创建Examplel类,该类继承JFrame类成为窗体类,在该类中创建标签组件,并添加到窗体界面中。importjava.awt.Color;importjava.awt.Container;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.SwingConstants;importjavax.swing.WindowConstants;publicclassExample1extendsJFrame{//定义一个类继承JFrame类publicExample1(Stringtitile){//定义一个构造方法,构造一个窗体。JFramejf=newJFrame(titile);//实例化一个JFrame对象Containercontainer=jf.getContentPane();//获取一个容器JLabeljl=newJLabel(这是一个JFrame窗体);//实例化一个JLabel对象//使标签上的文字居中jl.setHorizontalAlignment(SwingConstants.CENTER);container.add(jl);//将标签添加到容器中container.setBackground(Color.WHITE);//设置容器的背景颜色jf.setVisible(true);//设置窗体可视jf.setSize(400,400);//设置窗体大小//设置窗体关闭方式jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}publicstaticvoidmain(String[]args){//在主方法中构造一个窗体newExample1(创建一个JFrame窗体);}}运行本实例程序,结果如图所示。在例中,Exatplel类继承了JFrame类,在Example1(Stringtitile)方法中实例化JFrmne对象。JFrame类的常用构造方法包括以下两种形式publicJFrame()。publicJFrame(Stringtitle).JFrame类中的两种构造方法分别为无参的构造方法与有参的构造方法,第1种形式的构造方法可以创建一个初始不可见、没有标题的新窗体;第2种形式的构造方法在实例化该JFrame对象时可以创建一个不可见但具有标题的窗体。可以使用JFrme对像调用show()方法使窗体可见,但是该方法早已被新版JDK所弃用,通常使用setVisible(true)方法使窗体可见。同时可以使用setSize(intx,inty)方法设置窗体大小,其中x与y变量分别代表窗体的宽与高。创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法关闭窗体。Java为窗体关闭提供了多种方式,常用的有以下4种1、DO_NOTHING_ON_CLOSE。2、DISPOSE_ON_CLOSE。3、HIDE_ON_CLOSE。4、EXTT_ON_CLOSE。第1种窗体退出方式代表什么都不做就将窗体关闭;第2种退出方式则代表任何注册监听程序对象后会自动隐藏并释放窗体;第3种方式表示隐藏窗口的默认窗口关闭;第4种退出方式表示退出应用程序默认窗口关闭。2、JDialog窗体JDialog窗体是Swing组件中的对话框,它继承了AWT组件java.awtDialog类。JDialog窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样。JDialog窗体实质上就是另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。在应用程序中创建JDialog窗体需要实例化JDialog类,通常使用以下几个JDialog类的构造方法。publicJDialog():创建一个没有标题和父窗体的对话框。publicJDialog(Framef):创建一个指定父窗体的对话框,但该窗体没有标题。publicJDialog(Framef,booleanmodel):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。publicJDialog(Framef,Stringtitle):创建一个指定标题和父窗体的对话框。publicJDialog(FramefStringtitlebooleanmodel):创建一个指定标题、窗体和模式的对话框。下面来看一个实例,该实例主要实现单击JFrme窗体中的按钮后,弹出一个对话框窗体。【例】在项目中创建MyJDialog类,该类继承JDialog窗体,并在窗口中添加按钮,当用户点击该按钮后,将弹出一个对话框窗体。本实例代码如下:importjava.awt.Container;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.SwingConstants;publicclassMyFrameextendsJFrame{publicMyFrame(){Containercontainer=getContentPane();//创建一个容器container.setLayout(null);JLabeljl=newJLabel(这是一个JFrame窗体);//在窗体中设置标签//使标签上的文字居中jl.setHorizontalAlignment(SwingConstants.CENTER);container.add(jl);JButtonbl=newJButton(弹出对话框);//实例化一个按钮bl.setBounds(10,10,100,21);container.add(bl);//将按钮添加到容器中setSize(400,400);//设置窗体的大小bl.addActionListener(newActionListener(){//为按钮添加鼠标点击事件@OverridepublicvoidactionPerformed(ActionEvente){//使MyDialog窗体可见newMyDialog(MyFrame.this).setVisible(true);}});}publicstaticvoidmain(String[]args){newMyFrame().setVisible(true);;}}classMyDialogextendsJDialog{publicMyDialog(MyFrameframe){//实例化一个JDialog对象,指定对话框的父窗体、窗体标题和类型super(frame,第一个Dialog窗体,true);Containercontainer=getContentPane();//创建一个容器container.add(newJLabel(这是一个对话框));//在容器中添加标签setBounds(120,120,100,100);//设置对话框的大小}}运行本实例,结果如图所示。在本实例中,为了使对话框在父窗体弹出,定义了一个JFrame窗体,首先在该窗体中定义一个按钮,然后为此按钮添加一个鼠标单击监听事件,这里使用newMyJDialog().setVisible(true)语句使对话框窗体可见,这样就实现了用户单击该按钮后弹出对话框的功能。在MyJDialog类中,由于它继承了JDialog类,所以可以在构造方法中使用super关键字调用JDialog构造方法。在这里使用了publicJDialog(Framef,Stringtitle,booleanmodel)这种形式的构造方法,相应地设置了自定义的JFrame窗体以及对话框的标题和窗体类型。本实例代码中可以看到,JDialog窗体与JFrame窗体形式基本相同,甚至在设置窗体的特性时调用的方法名称都基本相同,如设置窗体大小、窗体关闭状态等。计算器packagecom.rakey.ui;importjava.awt.Color;importjava.awt.Container;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JTextField;importjavax.swing.WindowConstants;publicclassUI{privateJButtonclear;//清除按钮(AC)privateJButtonbackspace;//退格键privateJButtonzhengfuhao;//+/-键privateJButtonchuhao;//除号privateJButtonb_7;//按键7privateJButtonb_8;//按键8privateJButtonb_9;//按键7privateJButt