1

私のプログラムについて質問があります。プログラムには単一の class が含まれており、 typeと一緒Calculatorに操作できる電卓を実装する必要があります。+*double

その電卓用の GUI も作成しましたが、既に正常に動作していますが、関数を実装したにもかかわらず、ボタンが機能しません。

public void actionPerformed(ActionEvent e)

間違いは、私が推測するこの関数のどこかにあるに違いありません。ボタンの機能が機能しない理由がわかりません。これがコードです。

public class Calculator extends JFrame implements ActionListener {

    Calculator () {}

    JTextField parameter1;
    JTextField parameter2;
    JTextField ergebnis;
    JFrame window;
    Container cont;
    /* this function works fine */
    public void calculator_GUI() {     
       builds the GUI of the calculator,     
       this.window = new JFrame("Calculator");
       window.setSize(300,300);
       this.parameter1 = new JTextField("Parameter1...", 10);
       parameter1.addActionListener(this);
       this.parameter2 = new JTextField("Parameter1...", 10);
       parameter2.addActionListener(this);
       this.ergebnis = new JTextField("Ergebnis...", 5);
       ergebnis.addActionListener(this);
       JButton multiplizieren = new JButton("*");
       parameter1.addActionListener(this);
       JButton addieren = new JButton("+");
       parameter1.addActionListener(this);
       JButton clear = new JButton("clear");
       parameter1.addActionListener(this);
       this.cont = window.getContentPane();

       FlowLayout flowLayout = new FlowLayout(FlowLayout.RIGHT);
       cont.setLayout(flowLayout);

       cont.add(parameter1);
       cont.add(parameter2);
       cont.add(ergebnis);
       cont.add(multiplizieren);
       cont.add(addieren);
       cont.add(clear);
       window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       window.pack();
       window.setVisible(true);;
   }

   public void actionPerformed(ActionEvent e) {  
       String label = e.getActionCommand();
       if (label.equals("*")) {
           String a = parameter1.getText();
           String b = parameter2.getText();
           double zahl1=Double.parseDouble(a);
           double zahl2=Double.parseDouble(b);
           double result = zahl1*zahl2;
           String c = String.valueOf(result);
           ergebnis.setText(c);
       }
       else if (label.equals("+")) {
           String a = parameter1.getText();
           String b = parameter2.getText();
           double zahl1=Double.parseDouble(a);
           double zahl2=Double.parseDouble(b);
           double result = zahl1+zahl2;
           String c = String.valueOf(result);
           ergebnis.setText(c);
      }

      else if (label.equals("clear")) {
           String z = "";
           ergebnis.setText(z);
      }
      else { 
           window.dispose(); 
      }
}


  public static void main (String[] args) {   
      Calculator MyCalculator = new Calculator();
      MyCalculator.calculator_GUI();
  }
}
4

3 に答える 3

2

コピーと貼り付けのエラーがあるようです:

これ:

    JButton multiplizieren = new JButton("*");
    parameter1.addActionListener(this);
    JButton addieren = new JButton("+");
    parameter1.addActionListener(this);
    JButton clear = new JButton("clear");
    parameter1.addActionListener(this);

次のようにする必要があります。

    JButton multiplizieren = new JButton("*");
    multiplizieren.addActionListener(this);
    JButton addieren = new JButton("+");
    addieren.addActionListener(this);
    JButton clear = new JButton("clear");
    clear.addActionListener(this);
于 2013-06-27T16:29:11.043 に答える
1

テキストフィールドの代わりにactionListenerをボタンに追加

于 2013-06-27T16:34:52.753 に答える