-5
ちょっと私の減算ボタンと私の部門ボタンがうまくいかず、何が間違っているのかわからない。私のコードを修正できるように私を案内できるか教えてください! - ベン:)Java Eclipseの最初のCalculator GUI
enter code here
package week07_Ben_Calculator;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
パブリッククラスAdvancedCalculatorGUIは、私はあなたを介して行っていたActionListener {
JFrame frame;
JPanel butPanel;
JTextField res;
JTextField res2;
int oper = 0;
int currentCalc;
double last;
int memory = 0;
public static void main(String[] args) {
// Invocation
EventQueue.invokeLater(new Runnable() {
// Override run
@Override
public void run() {
// Call constructor
new AdvancedCalculatorGUI();
}
});
}
// Create GUI
public AdvancedCalculatorGUI() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Calculator");
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
// New text field
res = new JTextField();
res.setHorizontalAlignment(JTextField.RIGHT);
res.setEditable(false);
frame.add(res, BorderLayout.NORTH);
butPanel = new JPanel();
// 2nd text field
res2 = new JTextField();
res2.setHorizontalAlignment(JTextField.LEFT);
res2.setEditable(false);
frame.add(res2, BorderLayout.SOUTH);
// Create grid
butPanel.setLayout(new GridLayout(6, 3));
frame.add(butPanel, BorderLayout.CENTER);
// Add button
for (int i = 0; i < 10; i++) {
addButton(butPanel, String.valueOf(i));
}
//read button
JButton readButton = new JButton("Read");
readButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
memory = Integer.parseInt(res.getText());
res.setText("");
}
});
//store button
JButton storeButton = new JButton("Store");
storeButton.addActionListener(新しいのActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
res.setText(memory+"");
}
});
// Add button +
JButton additionButton = new JButton("+");
//additionButton.setActionCommand("+");
additionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
oper = 1;
res2.setText(res2.getText()+"+");}
});
operAct additionAction = new operAct(1);
additionButton.addActionListener(additionAction);
// Subtract button
JButton subtractionButton = new JButton("-");
subtractionButton.setActionCommand("-");
subtractionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
oper = 1;
res2.setText(res2.getText()+"-");}
});
operAct subtractionAction = new operAct(2);
subtractionButton.addActionListener(subtractionAction);
// Equal button
JButton eqButton = new JButton("=");
eqButton.setActionCommand("=");
eqButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
System.out.println(oper);
if (!res.getText().isEmpty()) {
int number = Integer.parseInt(res.getText());
if (oper == 1) {
int value = currentCalc + number;
last = value;
res.setText(Integer.toString(value));
res2.setText(res2.getText()+ "=" + Integer.toString(value));
} else if (oper == 2) {
int value = currentCalc - number;
last = value;
res.setText(Integer.toString(value));
res2.setText(res2.getText()+ "=" + Integer.toString(value));
} else if (oper == 3) {
int value = currentCalc * number;
last = value;
res.setText(Integer.toString(value));
res2.setText(res2.getText()+ "=" + Integer.toString(value));
} else if (oper == 4) {
if (number == 0)
res.setText("ERR");
double value = currentCalc/number;
last = value;
res.setText(Double.toString(value));
res2.setText(res2.getText()+ "=" + Double.toString(value));
}
}
}
});
// multiplication button
JButton mulButton = new JButton("*");
mulButton.setActionCommand("*");
mulButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
oper = 1;
res2.setText(res2.getText()+"*");}
});
operAct mulAction = new operAct(3);
mulButton.addActionListener(mulAction);
// division button
JButton divButton = new JButton("/");
divButton.setActionCommand("/");
divButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
oper = 1;
res2.setText(res2.getText()+"/");}
});
operAct divAction = new operAct(4);
divButton.addActionListener(divAction);
butPanel.add(additionButton);
butPanel.add(subtractionButton);
butPanel.add(eqButton);
butPanel.add(mulButton);
butPanel.add(divButton);
butPanel.add(readButton);
butPanel.add(storeButton);
frame.setVisible(true);
}
private void addButton(Container par, String nam) {
JButton b = new JButton(nam);
b.setActionCommand(nam);
b.addActionListener(this);
par.add(b);
}
@Override
public void actionPerformed(ActionEvent ev) {
String act = ev.getActionCommand();
res.setText(act);
System.out.println(ev);
res2.setText(res2.getText() + "" + act);
}
private class operAct implements ActionListener {
private int opt;
public operAct(int oper) {
opt = oper;
}
public void actionPerformed(ActionEvent ev) {
currentCalc = Integer.parseInt(res.getText());
oper = opt;
System.out.println(oper+" "+opt+" "+ currentCalc);
}
}
}
あなたが押した操作を伝えるのに 'oper'を使っているようです。この変数はどこで設定しますか? – ajb
「機能しない」とはどういう意味ですか?それは間違った値を与えますか?プログラムはクラッシュしますか?代わりに追加をしますか? – JJJ
この問題を解決するには、コードのデバッグを開始することができます。 –