赞
踩
学了一段时间,终于开始尝试写自己的计算器了。
分成两部分来完成,一是界面的实现;而是核心功能的实现。今天先来第一部分,界面。
目录
窗体中装了一个自己的面板,这个面板是边界布局的,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();
- }
-
- }
界面基本完成,下一篇开始实现各个按钮以及计算功能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。