標籤:java 部落格 原始碼 類 生活
大家好,今天放了一天的假,無聊的我簡單的敲了一下計算機的原始碼,發現以前的東西都忘的差不多了,所以趁現在還有點記憶,先試著敲回以前的感覺。。。。
好了,廢話不多說,先看原碼:
先建立一個主類:
public class Test{
public static void main(String[ ] args){
Calculator calc=new Calculator();
calc.PaintingFrameUi();
}
}
在建立幾個監聽器:
第一個:
import javax.swing.*; (要引包,由於包名過多,可以 用 “*” 一筆帶過。。。。)
import java.awt.event.*;
public class StringListener implements ActionListener{
//=============構造擷取TextField===================
JTextField jtx = null;
public StringListener(JTextField textarea){
jtx = textarea;
}
//=============運算子監聽器========================
public void actionPerformed(ActionEvent e){
String command=e.getActionCommand();
if(command.equals("=")){
String content = jtx.getText();
int result1 = content.indexOf("+");
int result2 = content.indexOf("-");
int result3 = content.indexOf("*");
int result4 = content.indexOf("/");
jtx.setText("");
//=============開始判斷============================
if (result1>0){
String value1 = content.substring(0, result1);
String value2 = content.substring(result1+1, content.length());
float f1 = Float.parseFloat(value1);
float f2 = Float.parseFloat(value2);
jtx.setText(""+(f1+f2));
}else if(result2>0){
String value1 = content.substring(0, result2);
String value2 = content.substring(result2+1, content.length());
float f1 = Float.parseFloat(value1);
float f2 = Float.parseFloat(value2);
jtx.setText(""+(f1-f2));
}else if(result3>0){
String value1 = content.substring(0, result3);
String value2 = content.substring(result3+1, content.length());
float f1 = Float.parseFloat(value1);
float f2 = Float.parseFloat(value2);
jtx.setText(""+(f1*f2));
}else if(result4>0){
String value1 = content.substring(0, result4);
String value2 = content.substring(result4+1, content.length());
float f1 = Float.parseFloat(value1);
float f2 = Float.parseFloat(value2);
jtx.setText(""+(f1/f2));
}
}else{
jtx.setText(jtx.getText()+command);
}
}
}
第二個監聽事件:
import javax.swing.*;
import java.awt.event.*;
public class MyListener implements ActionListener{
//===============構造擷取TextField================
JTextField jtx = null;
public MyListener(JTextField textarea){
jtx = textarea;
}
//===============監聽數字控制項======================
public boolean one=true;
public void actionPerformed(ActionEvent e){
String command=e.getActionCommand();
if (one){
jtx.setText(jtx.getText()+command);
}
}
}
最後一個包:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Calculator{
public String number[] ={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","/","="};
public void PaintingFrameUi(){
//===========Draw Main frame==========================
JFrame frame=new JFrame();
frame.setSize(242,285);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setTitle("Calculator");
//===========Set Layout================================
FlowLayout layout=new FlowLayout(0,0,0);
frame.setLayout(layout);
//===========To instance TextField Control=============
JTextField textarea=new JTextField(20);
textarea.setHorizontalAlignment(JTextField.RIGHT);
frame.add(textarea);
JPanel jp = new JPanel();
Dimension dimen = new Dimension(225,225);
jp.setPreferredSize(dimen);
frame.add(jp);
GridLayout gl = new GridLayout(4,4);
jp.setLayout(gl);
//===========Add listenre==============================
ActionListener action_listener=new MyListener(textarea);
ActionListener string_listener=new StringListener(textarea);
//===========To instance Control=======================
for(int i=0;i<16;i++){
JButton button=new JButton(number[i]);
jp.add(button);
if (i==3 || i==7 || i==11 || i==15 || i==14 || i==13){
button.addActionListener(string_listener);
}else{
button.addActionListener(action_listener);
}
}
//===========ShowFrame=================================
frame.setVisible(true);
}
}
好了,看到這裡 我相信你們都是看不是太懂,但是沒關係,自己動手去操作一下就知道效果了
由於時間關係,今天的代碼就先寫到這裡,現在繼續每天的目標和計劃吧:
1、每天鍛煉指法一小時;
2、每天堅持寫一篇部落格或者日誌;
3、每天上課提前十五分鐘進教室;
4、給自己鼓勵一句話-------不要太在意別人的眼光,最重要的是看自己的眼光,別人覺得好,證明你倆的愛好很像,他要是覺得你的眼光不好,也就證明了你倆愛好不一樣而已;
第二十三篇 Java如何編譯 計算機 的原始碼共用