?? jisuanqi.java
字號:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Jisuanqi extends JFrame implements ActionListener{
Result result = new Result(); //定義text的面板
Number number = new Number(); //定義按鈕面板
//當點擊按鈕+、-、*、/時,com = true
boolean com = false;
//當i=0時說明是我們第一次輸入,字符串text不會累加
int i = 0;
//存放text的內容
String text = "";
//存放點擊按鈕+、-、*、/之前的數(shù)值
double defbutton = 0;
//+、-、*、/的代號分別為1,2,3,4
int symbol = 0;
//構造函數(shù)
Jisuanqi(){
super("劉剛");//定義標題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設定關閉窗體時退出程
JPanel pane=new JPanel();//定義主面板
pane.setLayout(new BorderLayout());
setBounds(380,220,200,100);
pane.add(result, BorderLayout.NORTH);
pane.add(number, BorderLayout.CENTER);
//在屏幕中顯示的位置與大小
//設置監(jiān)聽
number.zero.addActionListener(this);
number.one.addActionListener(this);
number.two.addActionListener(this);
number.three.addActionListener(this);
number.four.addActionListener(this);
number.five.addActionListener(this);
number.six.addActionListener(this);
number.seven.addActionListener(this);
number.eight.addActionListener(this);
number.nine.addActionListener(this);
number.czero.addActionListener(this);// 置0
number.plus.addActionListener(this);// +
number.sub.addActionListener(this);// -
number.equal.addActionListener(this);// =
number.mul.addActionListener(this);// *
number.div.addActionListener(this);// 除
number.two_to_Hex.addActionListener(this);//2進制轉換10進制
number.sqrt.addActionListener(this);//求開根號
number.love_U.addActionListener(this);//just love U
number.point.addActionListener(this);//小數(shù)點
setContentPane(pane);
pack(); //初始化窗體大小為正好盛放所有按鈕
}
//處理按鈕觸發(fā)的事件
public void actionPerformed(ActionEvent e){
if (e.getSource() == number.one){
if (com || i == 0) {
result.text.setText("1");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "1");
}
}
else if (e.getSource() == number.two){
if (com || i == 0) {
result.text.setText("2");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "2");
}
}
else if (e.getSource() == number.three){
if (com || i == 0) {
result.text.setText("3");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "3");
}
}
else if (e.getSource() == number.four){
if (com || i == 0) {
result.text.setText("4");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "4");
}
}
else if (e.getSource() == number.five){
if (com || i == 0) {
result.text.setText("5");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "5");
}
}
else if (e.getSource() == number.six){
if (com || i == 0) {
result.text.setText("6");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "6");
}
}
else if (e.getSource() == number.seven){
if (com || i == 0) {
result.text.setText("7");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "7");
}
}
else if (e.getSource() == number.eight){
if (com || i == 0) {
result.text.setText("8");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "8");
}
}
else if (e.getSource() == number.nine){
if (com || i == 0) {
result.text.setText("9");
com = false;
i = 1;
}
else {
text = result.text.getText();
result.text.setText(text + "9");
}
}
else if (e.getSource() == number.zero){//處理0要注意
if (com || i == 0) {
result.text.setText("0");
com = false;
i = 1;
}
else {
text=result.text.getText( );
if(Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0){
result.text.setText(text + "0");
}
else if(text.trim().indexOf(".") == -1){
result.text.setText(text);
}
else{
result.text.setText(text+"0");
}
}
}
else if (e.getSource() == number.point){
if (com || i == 0){
result.text.setText("0.");
com=false;
i=1;
}
else{
text=result.text.getText();
if (text.trim().indexOf(".") == -1){
result.text.setText(text+".");
}
else{
result.text.setText(text);
}
}
}
else if (e.getSource() == number.czero){//置0鍵處理
result.text.setText("0");
i=0;
com=true;
}
//下面為運算獲得的第一個數(shù)
else if (e.getSource() == number.plus) { //獲得點擊+之前的數(shù)值
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 1;
}
else if (e.getSource() == number.sub) { //獲得點擊-之前的數(shù)值
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 2;
}
else if (e.getSource() == number.mul) { //獲得點擊*之前的數(shù)值
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 3;
}
else if (e.getSource() == number.div) { //獲得點擊 / 之前的數(shù)值
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 4;
}
//其他的進制轉換基本原理都一樣,所以就弄了一個2進制轉換為16進制
//要注意輸入一定要是二進制的數(shù)
else if (e.getSource() == number.two_to_Hex) { //進制轉換
com = true;
i = 0;
String text1=result.text.getText( );
for(int i=0;i<text1.length();i++){
char c = text1.charAt(i);
if(c =='1'|| c=='0'|| c=='.'){
int ad0=Integer.parseInt(result.text.getText(),2);
String ad2=Integer.toHexString(ad0);
result.text.setText(ad2+" ");
}
else{
result.text.setText("ERROR! 2進制轉換16進制只能輸入0或1 ! ");
}
}
}
else if (e.getSource() == number.sqrt) { //獲得點擊 開根號 之前的數(shù)值
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
double ad=Math.sqrt(defbutton);
result.text.setText(ad+" ");
}
else if (e.getSource() == number.love_U) { //
com = true;
i = 0;
result.text.setText("JUST FOR LOVE ");
}
else if (e.getSource() == number.equal){
switch(symbol){//求值
case 1:
{
double ad =
defbutton + Double.parseDouble(result.text.getText());
result.text.setText(ad + " ");
i = 0;
text = "";
break;
}
case 2:
{
double ad =
defbutton - Double.parseDouble(result.text.getText());
result.text.setText(ad + " ");
i = 0;
text = "";
break;
}
case 3:
{
double ad =
defbutton * Double.parseDouble(result.text.getText());
result.text.setText(ad + " ");
i = 0;
text = "";
break;
}
case 4:
{
double ad =
defbutton / Double.parseDouble(result.text.getText());
result.text.setText(ad + " ");
i = 0;
text = "";
break;
}
}
}
}
public static void main(String[] args) {
Jisuanqi loveyou = new Jisuanqi();
loveyou.show();
}
}
} //計算器顯示結果的窗體
class Result extends JPanel {
//text先是輸入和結果
JTextField text = new JTextField(20);
Result() { //講輸入的數(shù)字或得到的結果在text的右邊顯示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(true); //文本框不能編輯
setLayout(new BorderLayout()); //設定布局管理器邊框布局
add(text, BorderLayout.NORTH); //text放置在窗體的中間
}
}
class Number extends JPanel {//計算器數(shù)字按鈕定義面板
JButton zero = new JButton("0");
JButton one = new JButton("1");
JButton two = new JButton("2");
JButton three = new JButton("3");
JButton four = new JButton("4");
JButton five = new JButton("5");
JButton six = new JButton("6");
JButton seven = new JButton("7");
JButton eight = new JButton("8");
JButton nine = new JButton("9");
JButton plus = new JButton("+");
JButton sub = new JButton("-");
JButton mul = new JButton("*");
JButton div = new JButton("/");
JButton equal = new JButton("=");
JButton czero = new JButton("清零");
JButton point = new JButton(".");
JButton love_U=new JButton("love_U");
JButton sqrt=new JButton("sqrt");
JButton two_to_Hex=new JButton("進制");//10進制轉換16進制
Number(){
setLayout(new GridLayout(5, 4, 1, 1)); //定義布局管理器為網(wǎng)格布局
setBackground(Color.red); //設置背景顏色
add(one); //添加按鈕
add(two);
add(three);
add(plus);
add(four);
add(five);
add(six);
add(sub);
add(seven);
add(eight);
add(nine);
add(mul);
add(zero);
add(div);
add(point);
add(czero);
add(love_U);
add(two_to_Hex);
add(sqrt);
add(equal);
}
} //計算器顯示結果的窗體
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -