swing-計算器

Swing is a GUI widget toolkit for Java.[1] It is part of Oracle’s Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.

swing就是一個寫界面的Java工具包,跟delphi很像,最近寫了做了一點簡單的東西,整理一下。

代碼過幾天再貼吧,免得professor在網上查重複,把我的assignment打成cheating。

計算器

最終結果:
在這裏插入圖片描述1. 新建對象,所需要的container,button(數字和運算符),panel,textfield(設置爲只讀)
2. 添加容器到框架上,將panel添加到container,再將button,textfield加到panel上面。
3. 添加button,text field事件。

注意:JFrame用來做主頁面框架也可以用來做頂級窗體,要想把控件放在該界面中,必須把控件放在JPanel中,然後再把JPanel放在JFrame中,JPanel作爲一個容器使用。
Jpanel是一個靜態控制組件,可以用來顯示一行靜態信息,不能接受用戶的輸入。它必須放在象JFrame這樣的頂級窗口上才能輸出。
JFrame是最底層,JPanel是置於其面上,同一個界面只有一個JFrame,一個JFrame可以放多個JPanel。

創建對象:
	JTextField l = new JTextField(16);
	JPanel p = new JPanel();
	Container c = new Container();
	Font f = new Font("Times",Font.BOLD,44);   //顯示計算結果的字體
	Container c = getContentPane();  //  JFrame 對象中不能直接添加 AWT 或者 Swing 組件,這裏用getContentPane()方法獲得JFrame的內容面板,再對其加入組件
	//另一種JFrame添加組件的方式是建立一個Jpanel或JDesktopPane之類的中間容器,把組件添加到容器中
添加控件
		l.setFont(f);           	 	//添加字體格式
		l.setEditable(false);   		//計算器顯示結果應該是不可編輯的
		c.add(BorderLayout.CENTER,p);	//添加JPanel到container
		c.add(l,BorderLayout.NORTH);    //添加JTextField到JPanel

		p.setLayout(new GridLayout(4,4,1,1));  //GridLayout(int rows, int cols, int hgap, int vgap)
//創建具有指定行數和列數的網格佈局。
//rows - 該 rows 具有表示任意行數的值
//cols - 該 cols 具有表示任意列數的值
//hgap - 水平間距
//vgap - 垂直間距 
		for(int i=0;i<operand.length;i++) {
			JButton b = new JButton(operand[i]+"");
			b.addActionListener(new MyActionListener()); //添加監聽事件
			p.add(b);		
		}
添加事件

對於運算符運算,這裏使用棧進行處理。首先將第一個輸入數字進棧,然後判別第二個輸入的運算符如果爲“+”或者“-”,與下一個輸入數字進行相應處理。

			if(compute[i].equals("+")) {
				stack.pop();
				stack.push(Double.parseDouble(compute[i+1]));}
			if(compute[i].equals("-"))
				stack.push(-Double.parseDouble(compute[i+1]));
			if(compute[i].equals("X")) {
				Double re = stack.peek();
				stack.pop();
				stack.push(re*Double.parseDouble(compute[i+1]));
			}
			if(compute[i].equals("/")) {
				double divider = Double.parseDouble(compute[i+1]);
				Double re = stack.peek();
				stack.pop();
				stack.push(re/divider);
			}
最後構建JFrame
	my_cal cal = new my_cal(Color.BLACK,
				Color.GREEN,400,400);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章