Java-программа, которая добавляет два числа, сгенерированные с помощью двух ползунков
У меня есть это назначение для моего класса 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));
}
}
}
}
Когда я иду, чтобы запустить его, он не хочет работать. Я, вероятно, что-то упускаю, но я не могу понять это. Я даже прав на что-нибудь из этого?
3 ответа
Это:
public void actionPerformed(ActionEvent ae) {
int firstNum = Integer.parseInt(num1st.getValue());
int secondNum = Integer.parseInt(num2nd.getValue());
if(ae.getValue()== add){ // *****
не имеет смысла. Shoot - он даже не компилируется, так как у ActionEvent нет getValue()
метод. Вы не получаете "значение" ActionEvent, а получаете строку ActionCommand через getActionCommand()
, а затем вы можете сравнить его с другими строками, используя строки equals(...)
или же equalsIgnoreCase(...)
метод.
т.е.
if ("+".equals(ae.getActionCommand()) {
// do addition
} else if ("-".equals(ae.getActionCommand()) {
// do subtraction
}
В будущих вопросах, пожалуйста, опубликуйте все ошибки компилятора, которые могут возникнуть, если они появятся
У вас есть 2 источника ошибки компиляции здесь.
JSlider # getValue возвращает int
значение, поэтому нет необходимости использовать Integer.parseInt
который ожидает String
, Вместо этого вы можете использовать:
int firstNum = num1st.getValue();
int secondNum = num2nd.getValue();
Также getValue
не определено для ActionEvent
, getSource
даст вам Object
ссылка на JButton
:
Object source = ae.getSource();
if (ae.getSource() == add) {
answer.setText(String.valueOf(firstNum + secondNum));
} else if (source == subtract) {
answer.setText(String.valueOf(firstNum - secondNum));
}
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));
}
}
}
}