Java入门——计算器(界面篇)

学了一段时间,终于开始尝试写自己的计算器了。

分成两部分来完成,一是界面的实现;而是核心功能的实现。今天先来第一部分,界面。

目录

概要设计

简要说明

文件结构

代码介绍

面板的设计代码

界面代码

测试代码


 

概要设计

简要说明

窗体中装了一个自己的面板,这个面板是边界布局的,north位置是一个用来显示的label,center位置是一个装满按钮的面板panel;这个按钮面板panel是一个4*4的网格布局。

文件结构

当然结构不需要那么复杂,这只是我的个人习惯。

代码介绍

面板的设计代码

先总览:

package CaculatorFrame;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import CaculatorActionListener.NumberActionListener;
import CaculatorActionListener.OperaActionListener;



public class CaculatorPanel extends JPanel {
	JLabel display; //用于显示按钮与运算结果的标签
	JPanel panel; //用来装各个按钮的面板
	
	//构造方法
	public CaculatorPanel() {
		this.setLayout(new BorderLayout()); //给面板设置边界布局
		display=new JLabel("0"); //显示标签初始显示0
		this.add(BorderLayout.NORTH,display);//往面板中添加标签
		
		//下面是装按钮的面板
		panel=new JPanel();
		panel.setLayout(new GridLayout(4,4));
		//两种监听器(是自己写的监听器类)
		NumberActionListener nal=new NumberActionListener(); //操作数的监听器
		OperaActionListener oal=new OperaActionListener(); //操作符的监听器
		//给面板添加按钮
		addButton("7",nal);
		addButton("8",nal);
		addButton("9",nal);
		addButton("+",oal);
		
		addButton("4",nal);
		addButton("5",nal);
		addButton("6",nal);
		addButton("-",oal);
		
		addButton("1",nal);
		addButton("2",nal);
		addButton("3",nal);
		addButton("*",oal);
		
		addButton("0",nal);
		addButton(".",nal);
		addButton("=",oal);
		addButton("/",oal);
		
		//把按钮面板添加进来
		this.add(BorderLayout.CENTER,panel);
	}
	
	/**
	 * 自定义往按钮面板中添加按钮的方法
	 * @param s 按钮上显示的文本
	 * @param al 按钮添加的监听器
	 */
	void addButton(String s,ActionListener al) {
		JButton btn=new JButton(s);
		btn.addActionListener(al);
		//把按钮添加到面板中
		panel.add(btn);
	}
}

在自己写的面板类中。装了用于显示的label标签以及一个以网格布局装16的按钮的面板。

其中,为了减少代码量,自定义了一个添加按钮的方法。

注:其中用到的两个监听器类是自己定义的,暂时只是定义以备用,其中需要实现的方法将在下一个环节——功能实现来书写

package CaculatorActionListener;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class NumberActionListener implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

	}

}
package CaculatorActionListener;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class OperaActionListener implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

	}

}

界面代码

package CaculatorFrame;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class CaculatorFrame extends JFrame {
	//构造方法
	public CaculatorFrame() {
		this.setTitle("计算器");
		CaculatorPanel cp=new CaculatorPanel();
		this.add(cp);
		this.pack(); //自动调整宽高
		this.addWindowListener(new WindowAdapter() {
			public void WindowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		this.setVisible(true);
	}

}

大部分主要的代码都写在了自己的面板类中了。frame类只需要将面板添加进来,并且进行一些常规的界面设置代码即可。

测试代码

下面是用于运行的测试代码

import CaculatorFrame.CaculatorFrame;

public class Caculator {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new CaculatorFrame();
	}

}

界面基本完成,下一篇开始实现各个按钮以及计算功能

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值