Olá!
estou fazendo uma calculadora usando um combobox pra pegar o operador e um botão que começa pra calcular, porém tá dando esse erro:
"Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be cast to javax.swing.JComboBox
at ex3$Listener.actionPerformed(ex3.java:54)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6268)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6033)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4629)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2517)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$2.run(EventQueue.java:622)
at java.awt.EventQueue$2.run(EventQueue.java:620)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)"
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;
public class ex3 extends JFrame{
private final JPanel panel;
private JLabel label = new JLabel("=");
private JLabel resposta = new JLabel(" 0");
private JTextField txt1 = new JTextField("",15);
private JTextField txt2 = new JTextField("",15);
String[] opStrings = { "Soma", "Subtrai", "Multiplica", "Divide" };
JComboBox opList = new JComboBox(opStrings);
private Button calcular = new Button("Calcular");
GridBagConstraints cons = new GridBagConstraints();
GridBagLayout layout = new GridBagLayout();
char op;
boolean ok =false;
ex3(){
JFrame f = new JFrame("Editor de texto");
f.setSize(600, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel=new JPanel(layout), BorderLayout.CENTER);
f.setVisible(true);
cons.fill = GridBagConstraints.BOTH;
cons.gridy = 0; cons.gridx = 0;
panel.add(txt1, cons);
cons.gridy = 0; cons.gridx = 1;
panel.add(opList, cons);
cons.gridy = 0; cons.gridx = 2;
panel.add(txt2, cons);
cons.gridy = 0; cons.gridx = 3;
panel.add(label, cons);
cons.gridy = 0; cons.gridx = 4;
panel.add(resposta, cons);
cons.gridwidth = 4;
cons.gridy = 1; cons.gridx = 0;
panel.add(calcular, cons);
pack();
Listener l = new Listener();
opList.addActionListener(l);
calcular.addActionListener(l);
}
class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Button jtxt = (Button) e.getSource();
JComboBox comboBox = (JComboBox) e.getSource();
Object selected = comboBox.getSelectedItem();
if (jtxt == calcular)
{
ok = true;
}
if(ok){
if (selected == "Soma")
{
op = '+';
calcula();
}
else
if (selected == "Subtrai")
{op = '-'; calcula();
}
else
if (selected == "Multiplica")
{op = '*'; calcula();
}
else
if (selected == "Divide")
{op = '/'; calcula();
}
}
}
public void calcula() {
try {
System.out.println("op ");
Double v1 = new Double(txt1.getText());
Double v2 = new Double(txt2.getText());
double resultado;
switch (op) {
case '+': { resultado = v1.doubleValue() + v2.doubleValue(); break; }
case '-': { resultado = v1.doubleValue() - v2.doubleValue(); break; }
case '/': { resultado = v1.doubleValue() / v2.doubleValue(); break; }
case '*': { resultado = v1.doubleValue() * v2.doubleValue(); break; }
default:{ resultado = 0; break; }
}
resposta.setText(String.valueOf(resultado));
}
catch (Exception exp) {
JOptionPane.showMessageDialog(null, "Verifique os números digitados.");
}
}
}
public static void main(String[] args)
{
new ex3();
}
}
já tentei várias coisas, mas nada dá certo, alguém sabe como consertar isso?
