search
HomeJavajavaTutorialHow to implement a simple calculator interface in java swing

Knowledge applied:

1. The use of the commonly used top-level container JFrame class
2. The use of the commonly used intermediate container JPanel class
3. The use of single-line text boxes Use of the implementation class JTextField class
4. Use of the button implementation class JButton class
5. Use of the border layout manager
6. Use of the grid layout manager

Basic idea:

1. Create a window f1
2. Create a text box t1
3. Create an inner panel p3 and save the text box t1
4 .Create 16 buttons
5.Create inner panel p2, set to grid layout, used to save 16 buttons
6.Create outer panel p1, set to border layout, save p3 in the north and save in the middle p2

The following is the specific code implementation, which can be run directly

import javax.swing.JFrame;   //顶层容器 (框架)
import javax.swing.JPanel; //中间容器 (嵌板)最常用的面板
import javax.swing.JTextField; //单行文本框的实现类
import javax.swing.JButton;  //按钮
import javax.swing.border.EmptyBorder; 
//需要用EmptyBorder类来设置面板的边框属性
import javax.swing.SwingConstants; 
//SwingConstants是一个通常用于在屏幕上定位(位置)或定向(方向)组件的常量的集合
import java.awt.*; //布局管理器的类在这里面

public class calculator
{
    public static void main(String[] args) 
    {
        JFrame f1 = new JFrame("计算器");  //创建顶层容器(窗口)
        f1.setSize(250, 300);        //设置窗口大小

        JPanel p1 = new JPanel(new BorderLayout(5,5)); //创建一个面板
        //里面的new BorderLayout(5,5)是设置面板的布局(边框布局)
        //其中(5,5)的第1个5表示上下控件间距,第2个表示左右控件间距
        
        p1.setBorder(new EmptyBorder(5,5,5,5));   //设置边界距离  border 边界
        //面板的setBorder函数,用于设置面板边缘向内收缩宽度
        //里面的EmtyBorder(5,5,5,5)表示面板上,左,下,右各向内收缩 5个像素
        
        JTextField t1 = new JTextField(); //创建一个单行文本框
        t1.setColumns(10);  //这个用于设置文本框的列数  Columns 列
        t1.setHorizontalAlignment(SwingConstants.RIGHT); //设置文本框右对齐     
        //Horizontal 水平的        Alignment 对齐  记两个单词
        
        JPanel p2 = new JPanel(new GridLayout(4,4,5,5));//创建第二个面板
        //其中设置其布局为网格布局,(第一个4表示1行4个控件)
        //第2个4表示1列4个控件,第1个5表示上下控件间隔为5,第2个5表示左右控件间隔为5(像素)

        JButton b1 = new JButton("7");    //创建16个按钮
        JButton b2 = new JButton("8");
        JButton b3 = new JButton("9");
        JButton b4 = new JButton("/");
        
        JButton b5 = new JButton("4");
        JButton b6 = new JButton("5");
        JButton b7 = new JButton("6");
        JButton b8 = new JButton("*");

        JButton b9 = new JButton("1");
        JButton b10 = new JButton("2");
        JButton b11 = new JButton("3");
        JButton b12 = new JButton("-");
        
        JButton b13 = new JButton("0");
        JButton b14 = new JButton(".");
        JButton b15 = new JButton("=");
        JButton b16 = new JButton("+");

        p2.add(b1);    //将16个按钮全部添加到网格布局的面板p2中
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        
        p2.add(b5);
        p2.add(b6);
        p2.add(b7);
        p2.add(b8);
        
        p2.add(b9);
        p2.add(b10);
        p2.add(b11);
        p2.add(b12);
        
        p2.add(b13);
        p2.add(b14);
        p2.add(b15);
        p2.add(b16);
        
        JPanel p3 = new JPanel();   //创建第三个面板,用于保存之前的文本框t1
        p3.add(t1);     //将文本框t1添加到面板p3中
        p1.add(p3,BorderLayout.NORTH);//将p3添加到 为边框布局面板的p1的北部
        p1.add(p2,BorderLayout.CENTER); //将p2添加到面板的中部
        
        f1.add(p1);           //p1面板添加到窗口
        f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
        f1.setVisible(true);   //设置可见
    }
}

Run result:

How to implement a simple calculator interface in java swing

The above is the detailed content of How to implement a simple calculator interface in java swing. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?Mar 17, 2025 pm 05:46 PM

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?Mar 17, 2025 pm 05:45 PM

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?Mar 17, 2025 pm 05:44 PM

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?Mar 17, 2025 pm 05:43 PM

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

How does Java's classloading mechanism work, including different classloaders and their delegation models?How does Java's classloading mechanism work, including different classloaders and their delegation models?Mar 17, 2025 pm 05:35 PM

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)