多语言展示
当前在线:1662今日阅读:113今日分享:31

怎样用Swing编写一个计算器窗口?

学习了Swing的容器,布局方式和组件的知识之后,我们就可以运用学习过的这些知识来做一个计算器界面了,具体怎么实现呢?接下来我们就来一起见证计算器界面从无到有,组件从少到多的过程。
工具/原料

eclipse2019

方法/步骤
1

首先需要创建一个窗体,用来存放计算器的按钮和文本框组件:

2

创建一个JPanel中间容器panel1,添加到窗体的上方(north),用来存放计算器的文本框,文本框内容居右对齐

3

创建一个JPanel中间容器panel2,添加到窗体的下方(south),用来存放计算器的加减乘除和数字按钮

4

做完之后发现字体和组件的大小不匹配,看起来不好看,我们来设置一下字体。

5

最终的成品如下:

6

(程序源码)附件:复制到eclipse中可以直接运行 import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.Toolkit; import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.border.EmptyBorder;/** * 这个例子来布局一个计算器。 * 计算器界面可以分成两部分,即显示区和键盘区。 * 显示区可以使用文本框组件。 * 键盘区则是由很多按钮组成,可以使用网格布局管理器。 */public class Demo17_Calculator extends JFrame{ private JPanel contentPane;    //内容面板    private JTextField textField;    //文本框    public static void main(String[] args){    Demo17_Calculator frame=new Demo17_Calculator();        frame.setVisible(true);    }        public Demo17_Calculator() {    setTitle('计算器');    //设置窗体的标题        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置窗体退出时操作        SwingUtils.setCenter(this);//设置窗体大小600*800并居中        contentPane=new JPanel();    //创建内容面板        contentPane.setLayout(new BorderLayout(0,0));    //设置内容面板为边界布局        setContentPane(contentPane);    //应用内容面板        JPanel panel1=new JPanel();    //新建面板用于保存文本框        contentPane.add(panel1,BorderLayout.NORTH);    //将面板放置在边界布局的北部        textField=new JTextField();    //新建文本框        textField.setHorizontalAlignment(SwingConstants.RIGHT);    //文本框中的文本使用右对齐        panel1.add(textField);    //将文本框增加到面板中        textField.setColumns(50);    //设置文本框的列数是18        textField.setPreferredSize(new Dimension(50, 80));        JPanel panel2=new JPanel();    //新建面板用于保存按钮        contentPane.add(panel2, BorderLayout.CENTER);    //将面板放置在边界布局的中央        panel2.setLayout(new GridLayout(4,4,80,20));    //面板使用网格4X4布局        panel2.setBorder(BorderFactory.createEmptyBorder(50, 80, 50, 80));        JButton button01=new JButton('7');    //新建按钮        panel2.add(button01);    //应用按钮        JButton button02=new JButton('8');    //新建按钮        panel2.add(button02);    //应用按钮        JButton button03=new JButton('9');    //新建按钮        panel2.add(button03);    //应用按钮        JButton button04=new JButton('+');    //新建按钮        panel2.add(button04);    //应用按钮        JButton button05=new JButton('4');    //新建按钮        panel2.add(button05);    //应用按钮        JButton button06=new JButton('5');    //新建按钮        panel2.add(button06);    //应用按钮        JButton button07=new JButton('6');    //新建按钮        panel2.add(button07);    //应用按钮        JButton button08=new JButton('-');    //新建按钮        panel2.add(button08);    //应用按钮        JButton button09=new JButton('3');    //新建按钮        panel2.add(button09);    //应用按钮        JButton button10=new JButton('2');    //新建按钮        panel2.add(button10);    //应用按钮        JButton button11=new JButton('1');    //新建按钮        panel2.add(button11);    //应用按钮        JButton button12=new JButton('*');    //新建按钮        panel2.add(button12);    //应用按钮        JButton button13=new JButton('0');    //新建按钮        panel2.add(button13);    //应用按钮        JButton button14=new JButton('.');    //新建按钮        panel2.add(button14);    //应用按钮        JButton button15=new JButton('=');    //新建按钮        panel2.add(button15);    //应用按钮        JButton button16=new JButton('/');    //新建按钮        panel2.add(button16);    //应用按钮        button01.setFont(new Font('宋体', 1, 50));        button02.setFont(new Font('宋体', 1, 50));        button03.setFont(new Font('宋体', 1, 50));        button04.setFont(new Font('宋体', 1, 50));        button05.setFont(new Font('宋体', 1, 50));        button06.setFont(new Font('宋体', 1, 50));        button07.setFont(new Font('宋体', 1, 50));        button08.setFont(new Font('宋体', 1, 50));        button09.setFont(new Font('宋体', 1, 50));        button10.setFont(new Font('宋体', 1, 50));        button11.setFont(new Font('宋体', 1, 50));        button12.setFont(new Font('宋体', 1, 50));        button13.setFont(new Font('宋体', 1, 50));        button14.setFont(new Font('宋体', 1, 50));        button15.setFont(new Font('宋体', 1, 50));        button16.setFont(new Font('宋体', 1, 50));    }}

推荐信息