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

2025-10-20 08:13:43

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

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

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

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

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

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

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

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

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

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

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

5、最终的成品如下:

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

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));

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢