2014-10-29 25 views
0

作爲我的第一個小程序,我正在製作一個計算器(目前只添加),但我一直在搞搞清楚如何從聽衆那裏獲取數字。到目前爲止,我有:完成小程序計算器

import java.awt.FlowLayout; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JApplet; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

public class calculator extends JApplet { 

    private JTextField num1; 
    private JTextField num2; 
    private JButton calculate; 
    private JLabel result; 
    private double numOne,numTwo; 
    private double sum = numOne + numTwo; 

    public void init() { 
     num1 = new JTextField("",9); 
     num2 = new JTextField("",9); 
     calculate = new JButton("Calculate"); 
     result = new JLabel("The Answer is: " + sum); 

     num1.addActionListener(new num1Listener()); 
     num2.addActionListener(new num2Listener()); 
     calculate.addActionListener(new doMath()); 

     add(num1); 
     add(num2); 
     add(calculate); 

     setLayout(new FlowLayout()); 
     setSize(200,200); 
    } 
    public void paint(Graphics g) { 
     super.paint(g); 
     g.drawString("The answer is " + sum, 20, 20); 
    } 
    class num1Listener implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      String num1input = num1.getText(); 
      numOne = Double.parseDouble(num1input); 
      } 
    } 
    class num2Listener implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      String num2input = num2.getText(); 
      numTwo = Double.parseDouble(num2input); 
     } 
    } 
    class doMath implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      add(result); 
     } 
    } 
} 

如何從這些偵聽器和我的代碼中獲得我的numOne和numTwo雙打?我想將它們加在一起並將它們存儲在sum變量中。

+0

1)請參閱本[計算器示例](http://stackoverflow.com/a/7441804/418556)。它使用'ScriptEngine'來評估文本區域中的表達式。 2)爲什麼編寫一個小程序?如果是由於老師指定它,請將它們轉介給[爲什麼CS教師應該**停止**教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop教學-java的小應用程序/)。 – 2014-10-29 01:34:23

回答

0

並將其作爲自己的代碼中的實例字段...

public class calculator extends JApplet { 
    private double number1, number2; 

然後從田間地頭爲它們分配值...

public void actionPerformed(ActionEvent e) { 
    String num1input = num1.getText(); 
    number1 = Double.parseDouble(num1input); 

說了這麼多。我可能會更好地擁有一個「等號」按鈕,當點擊該按鈕時,從文本字段獲取值,將它們轉換爲double s對它們進行求和並將結果一步顯示在屏幕上,而不是嘗試使用文本字段個別,但是這只是我

更新

爲了顯示結果,你首先需要獲得的數字...

double number1 = Double.parseDouble(num1.getText()); 
double number2 = Double.parseDouble(num2.getText()); 

你需要總結在一起......

sum = number1 + number2; 

然後,你需要更新result標籤...

result.setText(Double.toString(sum)); 

做...

private double sum = numOne + numTwo; 

只會增加的numOnenumTwo的當前值一起,其中,但默認,是0,所以它沒有意義...

作爲一個更精簡的,我建議不要使用JApplet學習用,小程序,有自己的問題,這是相當困難的經驗的開發人員診斷,堅持良好的老臺式機的Windows

舉個例子...

public class Calculator extends JApplet { 

    private JTextField num1; 
    private JTextField num2; 
    private JButton calculate; 
    private JLabel result; 
    private double numOne, numTwo; 
    private double sum = numOne + numTwo; 

    public void init() { 
     num1 = new JTextField("", 9); 
     num2 = new JTextField("", 9); 
     calculate = new JButton("Calculate"); 
     result = new JLabel("The Answer is: " + sum); 

     calculate.addActionListener(new DoMath()); 

     add(num1); 
     add(num2); 
     add(calculate); 
     add(result); 

     setLayout(new FlowLayout()); 
     setSize(200, 200); 
    } 

    class DoMath implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      try { 
       double number1 = Double.parseDouble(num1.getText()); 
       double number2 = Double.parseDouble(num2.getText()); 
       result.setText(Double.toString(number1 + number2)); 
      } catch (NumberFormatException exp) { 
       result.setText("Bad values, fix em"); 
      } 
     } 
    } 
} 
+0

謝謝!我現在試圖使按鈕偵聽器功能。如果我讓偵聽器添加(結果)一個actionEvent,爲什麼它不工作? – AlecR 2014-10-29 00:39:24

+0

我不知道,因爲你的代碼不包含它 – MadProgrammer 2014-10-29 00:41:31

+0

1.不要爲此重寫'paint',它的方式遠不止於此。 2.嘗試在add(result);後調用'invalidate();'和repaint()'來強制佈局管理器更新界面 – MadProgrammer 2014-10-29 00:54:09