有加減乘除小數點等于的運算就行了,反正我開始點需other, 然后點jframe,進入頁面之后點一下水平制然后就點什么jbutton
jText之類的,然后這些按鈕里面寫什么內容呢??我就不會了
1 回答
已采納
大咪
TA貢獻785條經驗 獲得超332個贊
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
?
public?class?Calc?extends?JFrame?implements?ActionListener?{
????private?static?final?long?serialVersionUID?=?-169068472193786457L;
????private?class?WindowCloser?extends?WindowAdapter?{
???????public?void?windowClosing(WindowEvent?we)?{
???????????System.exit(0);
???????}
????}
?
????int?i;
????????private?final?String[]?str?=?{?"7",?"8",?"9",?"/",?"4",?"5",?"6",?"*",?"1",
???????????"2",?"3",?"-",?".",?"0",?"=",?"+"?};
????//?建立按鈕
????JButton[]?buttons?=?new?JButton[str.length];
????//?撤銷重置
????JButton?reset?=?new?JButton("CE");
????//?建立文本域顯示結果
????JTextField?display?=?new?JTextField("0");
????
????????public?Calc()?{
???????super("Calculator");
???????//?添加一個面板
???????JPanel?panel1?=?new?JPanel(new?GridLayout(4,?4));
???????//?panel1.setLayout(new?GridLayout(4,4));
???????for?(i?=?0;?i?<?str.length;?i++)?{
???????????buttons[i]?=?new?JButton(str[i]);
???????????panel1.add(buttons[i]);
???????}
???????JPanel?panel2?=?new?JPanel(new?BorderLayout());
???????//?panel2.setLayout(new?BorderLayout());
???????panel2.add("Center",?display);
???????panel2.add("East",?reset);
???????//?JPanel?panel3?=?new?Panel();
???????getContentPane().setLayout(new?BorderLayout());
???????getContentPane().add("North",?panel2);
???????getContentPane().add("Center",?panel1);
???????//?添加操作動作的監聽器.
???????for?(i?=?0;?i?<?str.length;?i++)
???????????buttons[i].addActionListener(this);
???????//?為重置按鈕添加監聽器
???????reset.addActionListener(this);
???????display.addActionListener(this);
???????//?The?"close"?button?"X".
???????addWindowListener(new?WindowCloser());
???????//?Initialize?the?window?size.
???????setSize(800,?800);
???????//?Show?the?window.
???????//?show();?Using?show()?while?JDK?version?is?below?1.5.
???????setVisible(true);
???????//?Fit?the?certain?size.
???????pack();
????}???
????
????public?void?actionPerformed(ActionEvent?e)?{
???????Object?target?=?e.getSource();
???????String?label?=?e.getActionCommand();
???????if?(target?==?reset)
???????????handleReset();
???????else?if?("0123456789.".indexOf(label)?>?0)
???????????handleNumber(label);
???????else
???????????handleOperator(label);
????}
????//?Is?the?first?digit?pressed?
????boolean?isFirstDigit?=?true;
????/**
?????*?Number?handling.
?????*?@param?key?the?key?of?the?button.
?????*/
????public?void?handleNumber(String?key)?{
???????if?(isFirstDigit)
???????????display.setText(key);
???????else?if?((key.equals("."))?&&?(display.getText().indexOf(".")?<?0))
???????????display.setText(display.getText()?+?".");
???????else?if?(!key.equals("."))
???????????display.setText(display.getText()?+?key);
???????isFirstDigit?=?false;
????}
????
????/**
?????*?Reset?the?calculator.
?????*/
????public?void?handleReset()?{
???????display.setText("0");
???????isFirstDigit?=?true;
???????operator?=?"=";
????}
?
????double?number?=?0.0;
????String?operator?=?"=";
????
???????public?void?handleOperator(String?key)?{
???????if?(operator.equals("+"))
???????????number?+=?Double.valueOf(display.getText());
???????else?if?(operator.equals("-"))
???????????number?-=?Double.valueOf(display.getText());
???????else?if?(operator.equals("*"))
???????????number?*=?Double.valueOf(display.getText());
???????else?if?(operator.equals("/"))
???????????number?/=?Double.valueOf(display.getText());
???????else?if?(operator.equals("="))
???????????number?=?Double.valueOf(display.getText());
???????display.setText(String.valueOf(number));
???????operator?=?key;
???????isFirstDigit?=?true;
????}
????
????public?static?void?main(String[]?args)?{
???????new?Calc();
????}
}
你創建完的面板需要繼承一個監聽器,他的目的是監聽你的按鍵并將參數傳入,算法部分就是很簡單的+-*/
添加回答
舉報
0/150
提交
取消
