I'm trying to create a programmer's calculator (GUI) that will convert a value from one base form to another.
Here's my action listener snippet where I'm having difficulty
private class RdoHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent ae) {
String temp = txt.getText();
int prev = 0;
JRadioButton jb = (JRadioButton) ae.getSource();
if (jb == BIN) {
btnA.setEnabled(false);
btnB.setEnabled(false);
btnC.setEnabled(false);
btnD.setEnabled(false);
btnE.setEnabled(false);
btnF.setEnabled(false);
btn0.setEnabled(!false);
btn1.setEnabled(!false);
btn2.setEnabled(false);
btn3.setEnabled(false);
btn4.setEnabled(false);
btn5.setEnabled(false);
btn6.setEnabled(false);
btn7.setEnabled(false);
btn8.setEnabled(false);
btn9.setEnabled(false);
temp = txt.getText();
if (prev == 3) {
temp = Integer.toBinaryString(Integer.parseInt(txt.getText(), 8));
txt.setText(temp);
} else if (prev == 2) {
temp = Integer.toBinaryString(Integer.parseInt(txt.getText(), 16));
txt.setText(temp);
} else if (prev == 4) {
temp = Integer.toBinaryString(Integer.parseInt(txt.getText()));
txt.setText(temp);
} else {
txt.setText("");
}
prev = 1;
}
if (jb == HEX) {
btnA.setEnabled(!false);
btnB.setEnabled(!false);
btnC.setEnabled(!false);
btnD.setEnabled(!false);
btnE.setEnabled(!false);
btnF.setEnabled(!false);
btn0.setEnabled(!false);
btn1.setEnabled(!false);
btn2.setEnabled(!false);
btn3.setEnabled(!false);
btn4.setEnabled(!false);
btn5.setEnabled(!false);
btn6.setEnabled(!false);
btn7.setEnabled(!false);
btn8.setEnabled(!false);
btn9.setEnabled(!false);
temp = txt.getText();
if (prev == 1) {
temp = Integer.toHexString(Integer.parseInt(txt.getText(), 2));
txt.setText(temp);
} else if (prev == 3) {
temp = Integer.toHexString(Integer.parseInt(txt.getText(), 8));
txt.setText(temp);
} else if (prev == 4) {
temp = Integer.toHexString(Integer.parseInt(txt.getText()));
txt.setText(temp);
}
prev = 2;
}
if (jb == OCT) {
btnA.setEnabled(false);
btnB.setEnabled(false);
btnC.setEnabled(false);
btnD.setEnabled(false);
btnE.setEnabled(false);
btnF.setEnabled(false);
btn0.setEnabled(!false);
btn1.setEnabled(!false);
btn2.setEnabled(!false);
btn3.setEnabled(!false);
btn4.setEnabled(!false);
btn5.setEnabled(!false);
btn6.setEnabled(!false);
btn7.setEnabled(!false);
btn8.setEnabled(false);
btn9.setEnabled(false);
temp = txt.getText();
if (prev == 1) {
temp = Integer.toOctalString(Integer.parseInt(txt.getText(), 2));
txt.setText(temp);
} else if (prev == 2) {
temp = Integer.toOctalString(Integer.parseInt(txt.getText(), 16));
txt.setText(temp);
} else if (prev == 4) {
temp = Integer.toOctalString(Integer.parseInt(txt.getText()));
txt.setText(temp);
}
prev = 3;
}
if (jb == DEC) {
btnA.setEnabled(false);
btnB.setEnabled(false);
btnC.setEnabled(false);
btnD.setEnabled(false);
btnE.setEnabled(false);
btnF.setEnabled(false);
btn0.setEnabled(!false);
btn1.setEnabled(!false);
btn2.setEnabled(!false);
btn3.setEnabled(!false);
btn4.setEnabled(!false);
btn5.setEnabled(!false);
btn6.setEnabled(!false);
btn7.setEnabled(!false);
btn8.setEnabled(!false);
btn9.setEnabled(!false);
temp = txt.getText();
if (prev == 1) {
temp = Integer.toString(Integer.parseInt(txt.getText(), 2));
txt.setText(temp);
} else if (prev == 3) {
temp = Integer.toString(Integer.parseInt(txt.getText(), 8));
txt.setText(temp);
} else if (prev == 2) {
temp = Integer.toString(Integer.parseInt(txt.getText(), 16));
txt.setText(temp);
}
prev = 4;
}
}
}
As you can see, I use prev to determine if the value is a binary, octal, hex, or decimal.
The problem, is when I initialize the value of prev in an if statement, the value of prev reverts back to 0. Please help :)
Aucun commentaire:
Enregistrer un commentaire