0

スライダーを使用して2つの数値を追加する必要がある、Javaクラスにこの割り当てがあり、本当に行き詰まっています。これが私のコードです:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; 
import javax.swing.*;

public class slideCalculator {
JButton add,subtract;
JSlider num1st,num2nd;
JLabel answer;
public slideCalculator(){
    JFrame calc = new JFrame("Mediocre Calculator");
    num1st = new JSlider (0, 100, 0);
    num1st.setMajorTickSpacing (10);
    num1st.setMinorTickSpacing (5);
    num2nd = new JSlider (0, 100, 0);
    num2nd.setMajorTickSpacing (10);
    num2nd.setMinorTickSpacing (5);
    add = new JButton("+");
    subtract = new JButton("-");
    answer = new JLabel("");
    calc.setDefaultCloseOperation(calc.EXIT_ON_CLOSE);
    calc.setVisible(true);
    calc.setBounds(500, 200, 290, 210);
    calc.setLayout(new GridLayout(0,2,1,1));
    calc.add(new JLabel("First Number: "));
    calc.add(num1st);
    calc.add(new JLabel("Second Number: "));
    calc.add(num2nd);
    calc.add(new JLabel("Answer: "));
    calc.add(answer);
    calc.add(add);
    calc.add(subtract);
    add.addActionListener(new action());
    subtract.addActionListener(new action());

}
public static void main(String[] args) {
    slideCalculator lc = new slideCalculator();
}
public class action implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
        int firstNum = Integer.parseInt(num1st.getValue());
        int secondNum = Integer.parseInt(num2nd.getValue());
        if(ae.getValue()== add){
            answer.setText(String.valueOf(firstNum+secondNum));
        }
        else if (ae.getValue()==subtract){
            answer.setText(String.valueOf(firstNum-secondNum));
        }
        } 

}
}

私がそれを実行するために行くとき、それは働きたくありません。私はおそらく何かが足りないのですが、それを理解できないようです。私もそれのいずれかで正しいですか?

4

3 に答える 3

5

これ:

public void actionPerformed(ActionEvent ae) {
    int firstNum = Integer.parseInt(num1st.getValue());
    int secondNum = Integer.parseInt(num2nd.getValue());
    if(ae.getValue()== add){  // *****

意味がありません。シュート-ActionEventにはメソッドがないため、コンパイルすらしませんgetValue()。ActionEventの「値」を取得するのではなく、を介してそのactionCommand文字列を取得し、 StringまたはメソッドgetActionCommand()を使用して他の文字列と比較できます。equals(...)equalsIgnoreCase(...)

すなわち、

if ("+".equals(ae.getActionCommand()) {
   // do addition
} else if ("-".equals(ae.getActionCommand()) {
   // do subtraction
}

今後の質問では、発生したすべてのコンパイラエラーを投稿してください。

于 2013-03-17T21:44:11.597 に答える
3

ここにコンパイルエラーの2つの原因があります。

JSlider#getValueは値を返すため、を期待するものintを使用する必要はありません。代わりに、次を使用できます。Integer.parseIntString

int firstNum = num1st.getValue();
int secondNum = num2nd.getValue();

また、getValueは未定義でありActionEvent、:の参照をgetSource提供します。ObjectJButton

Object source = ae.getSource();
if (ae.getSource() == add) {
   answer.setText(String.valueOf(firstNum + secondNum));
} else if (source == subtract) {
   answer.setText(String.valueOf(firstNum - secondNum));
}
于 2013-03-17T21:42:52.817 に答える
0
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; 
import javax.swing.*;

public class slideCalculator {
JButton add,subtract;
JSlider num1st,num2nd;
JLabel answer;
public slideCalculator(){
    JFrame calc = new JFrame("Mediocre Calculator");
    num1st = new JSlider (0, 100, 0);
    num1st.setMajorTickSpacing (10);
    num1st.setMinorTickSpacing (5);
    num2nd = new JSlider (0, 100, 0);
    num2nd.setMajorTickSpacing (10);
    num2nd.setMinorTickSpacing (5);
    add = new JButton("+");
    subtract = new JButton("-");
    answer = new JLabel("");
    calc.setDefaultCloseOperation(calc.EXIT_ON_CLOSE);
    calc.setVisible(true);
    calc.setBounds(500, 200, 290, 210);
    calc.setLayout(new GridLayout(0,2,1,1));
    calc.add(new JLabel("First Number: "));
    calc.add(num1st);
    calc.add(new JLabel("Second Number: "));
    calc.add(num2nd);
    calc.add(new JLabel("Answer: "));
    calc.add(answer);
    calc.add(add);
    calc.add(subtract);
    add.addActionListener(new action());
    subtract.addActionListener(new action());

}
public static void main(String[] args) {
    slideCalculator lc = new slideCalculator();
}
public class action implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
        int firstNum = num1st.getValue();
        int secondNum = num2nd.getValue();
        if("+".equals(ae.getActionCommand())) {
            answer.setText(String.valueOf(firstNum+secondNum));
        }
        else 
        if ("-".equals(ae.getActionCommand())) {
            answer.setText(String.valueOf(firstNum-secondNum));
        }
        } 

}
}
于 2013-12-20T11:12:39.980 に答える