利用Java制作计算器的界面

来源:互联网 发布:head first for java 编辑:程序博客网 时间:2024/06/05 03:37

Java制作基于GUI计算器的界面

    

             首先,我们需要知道GUI是什么东西,所谓GUI,全称为(Graphical User Interface),又称图形用户接口,或者是图形用户界面其实就是指采用图形方式显示的计算机操作用户界面。

             既然我们知道了GUI,然后我们就自然联想到了各种按钮,各种窗口图形,而这些东西,全部都包含在了java自带的Swing中,Swing,嗯,百度一下:Swing是一个用于开发Java应用程序用户界面的开发工具包。

至于我们如何去调用,在代码的开头附上一句:

import javax.swing.*;
就可以了。

               在具体讲解之前,还需要了解一些Java中的一些词汇:

JFrame :它是屏幕上window的对象,能够最大化、最小化、关闭

JPanel :是一种轻量级容器,可以加入到JFrame窗体中

JTextArea :是一个文本框,可以显示文本

JButton : 是Java中的按钮,可以实现一些功能

                  讲了这么多废话,终于要开始了。

JFrame frame1 = new JFrame("calculate") ;  JPanel pan1 = new JPanel();//数字按钮  JPanel pan2 = new JPanel();//符号按钮  JTextArea nr1 = new JTextArea(1,10);//建立文本框

               如上:我们就已经建立了一个名为calculate的窗口啦,里面包含着两个容器,一个是用来放置数字按钮的,还有一个是用来放置符号按钮的。还有一个用来显示你输入的东西的文本显示区域。

东西既然设置好了,总得设置个大小吧:

 frame1.setSize(225,245); pan1.setLayout(null); pan1.setBounds(0,20,180,240);//建立容器1的大小 pan2.setLayout(null); pan2.setBounds(180,30,60,240);//建立容器2的大小 
               上面的setLayout() 实际是指pan1的布局为啥样,我们设置为空,是为了下面的绝对坐标的使用。

框架既然已经大致出来了,没有按钮怎么行呢?

for(int i=0;i<=2;i++) { for(int j=1;j<=3;j++) { JButton but = new JButton(""+(3*i+j)); but.setBounds(60*(j-1),60*i,60,60); pan1.add(but);}}JButton but10 = new JButton("#");     but10.setBounds(0,180,60,60);     pan1.add(but10);     JButton but11 = new JButton("0");     but11.setBounds(60,180,60,60);     pan1.add(but11);     JButton but12 = new JButton("~");     but12.setBounds(120,180,60,60);     pan1.add(but12);
                  这样,我们就建立了1-9,九个按钮以及建立了0,#,~,这就完成了数字区域的按钮。
                  哦,忘了说了,  .setBounds()函数其实是 .setBounds(x,y,length,height)   x就是在容器中的绝对坐标下,y也同理,length就是在x方向上按钮的长度,height就是在y方向上的长度。

                  紧接着,我们把容器二中的按钮也添加进去:

JButton  jia = new JButton("+"); jia.setBounds(180,0,60,40); JButton  jian = new JButton("-"); jian.setBounds(180,40,60,40); JButton  chen = new JButton("*"); chen.setBounds(180,80,60,40); JButton  chu = new JButton("/"); chu.setBounds(180,120,60,40); JButton  qingkong = new JButton("清空"); qingkong.setBounds(180,160,60,40); JButton  dengyu = new JButton("="); dengyu.setBounds(180,200,60,40); pan2.add(jia);//在容器2中添加功能按钮 pan2.add(jian); pan2.add(chen); pan2.add(chu); pan2.add(qingkong); pan2.add(dengyu);
               最后,我们还需要将整个window进行布局,你想嘛,上面只是确定了有哪些容器,却没有说到底怎么分布。
 BorderLayout Bor = new BorderLayout(2,2);//进行布局 frame1.setLayout(Bor); frame1.add(nr1,Bor.NORTH); frame1.add(pan1,Bor.CENTER); frame1.add(pan2,Bor.CENTER);
               先给大家说明一下,java一共有好几种布局方式:布局方式解释:BorderLayout分为五块:东西南北中FlowLayout类似段落GirdLayout被分为等大矩形BoxLayout额,怎么解释呢?类似于盒子进行排布CardLayout类似于图层
最后的话,别忘了加上:

 frame1.setVisible(true) ;  frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
给大家发个总的代码吧,最后了,第一次写博客,写的不好还请见谅。

package diqizhang; import java.awt.BorderLayout;import javax.swing.*;public class calculate1{ public static void main(String[] args){{ JFrame frame1 = new JFrame("calculate") ;  JPanel pan1 = new JPanel();//数字按钮  JPanel pan2 = new JPanel();//符号按钮  JTextArea nr1 = new JTextArea(1,10);//建立文本框  frame1.setSize(225,245); pan1.setLayout(null); pan1.setBounds(0,20,180,240);//建立容器1的大小 pan2.setLayout(null); pan2.setBounds(180,30,60,240);//建立容器2的大小   //建立12个按钮 for(int i=0;i<=2;i++) { for(int j=1;j<=3;j++) { JButton but = new JButton(""+(3*i+j)); but.setBounds(60*(j-1),60*i,60,60); pan1.add(but);}} JButton but10 = new JButton("#"); but10.setBounds(0,180,60,60); pan1.add(but10); JButton but11 = new JButton("0"); but11.setBounds(60,180,60,60); pan1.add(but11); JButton but12 = new JButton("~"); but12.setBounds(120,180,60,60); pan1.add(but12);  JButton  jia = new JButton("+"); jia.setBounds(180,0,60,40); JButton  jian = new JButton("-"); jian.setBounds(180,40,60,40); JButton  chen = new JButton("*"); chen.setBounds(180,80,60,40); JButton  chu = new JButton("/"); chu.setBounds(180,120,60,40); JButton  qingkong = new JButton("清空"); qingkong.setBounds(180,160,60,40); JButton  dengyu = new JButton("="); dengyu.setBounds(180,200,60,40); pan2.add(jia);//在容器2中添加功能按钮 pan2.add(jian); pan2.add(chen); pan2.add(chu); pan2.add(qingkong); pan2.add(dengyu);  BorderLayout Bor = new BorderLayout(2,2);//进行布局 frame1.setLayout(Bor); frame1.add(nr1,Bor.NORTH); frame1.add(pan1,Bor.CENTER); frame1.add(pan2,Bor.CENTER); frame1.setVisible(true) ;  frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}}效果图:::::   




原创粉丝点击