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

}

界面基本完成,下一篇開始實現各個按鈕以及計算功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章