1

I'm trying to insert two fields (priority level that is in a JCombobox and his ID that is get according the option selected in the combo) and complete the rest of the fields (all String) to submit all... but i'm getting this Stacktrace:

run:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: br.com.jdbc.victor.model.PriorityDetail cannot be cast to java.lang.String
    at br.com.jdbc.victor.view.FormNewCall.btSubmitActionPerformed(FormNewCall.java:349)
    at br.com.jdbc.victor.view.FormNewCall.access$500(FormNewCall.java:30)
    at br.com.jdbc.victor.view.FormNewCall$6.actionPerformed(FormNewCall.java:151)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    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:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
    at java.awt.Dialog.show(Dialog.java:1084)
    at java.awt.Component.show(Component.java:1671)
    at java.awt.Component.setVisible(Component.java:1623)
    at java.awt.Window.setVisible(Window.java:1014)
    at java.awt.Dialog.setVisible(Dialog.java:1005)
    at br.com.jdbc.victor.view.FormNewCall.lambda$main$0(FormNewCall.java:495)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

at these two lines under:

private void btSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {                                           
            Call call = new Call();
            MySQLDaoManager man = new MySQLDaoManager("root", "", "localhost", "attendances", 3306);  
            java.util.Date date_util = new java.util.Date();
            java.sql.Date date_sql = new java.sql.Date(date_util.getDate());
            java.sql.Time time_sql = new java.sql.Time(date_util.getTime());

            try {
                //ClassCastException at this line above 
                call.setPriority((String) cbPriorityDetail.getSelectedItem());
                //this one is giving SQL Error and it's flagged by the Catch block of the code
                call.setPriorityDetail(Long.parseLong(tfIdPriorityDetail.getText()));
                call.setInitialDate(date_sql);
                call.setInitialTime(time_sql);
                call.setFinalTime(time_sql);

                man.getCallDAO().insert(call);

                if(tfCallId.getText().length() != 0){
                     call.setCallId(Long.parseLong(tfCallId.getText()));
                     man.getCallDAO().update(call);
                }
                if(tfInitialDate.getValue() != null && tfInitialTime.getValue() != null && tfFinalTime.getValue() != null){
                    JOptionPane.showMessageDialog(rootPane, "Inserted User sucessful!!", "Done", JOptionPane.INFORMATION_MESSAGE);
                    btNewActionPerformed(evt);
                } else {
                    JOptionPane.showMessageDialog(rootPane, "Please fill the fields again", "Isn't possible to insert data", JOptionPane.INFORMATION_MESSAGE);
                    btNewActionPerformed(evt);
                }
            } catch (DAOException ex) {
                JOptionPane.showMessageDialog(rootPane, "MySQL Error", "Error", JOptionPane.ERROR_MESSAGE);
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(rootPane, "Error to get connection", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

This form works at this way: you choose one item at the JComboBox cbPriorityDetail between high, medium or low, and the tfIdPriorityDetail get the corresponding id according to the selected priority (I already did a function that do it and it's working fine) and fill the next three fields: Initial Date, Initial Time and Final Time... if i comment these two lines that are with error and submit the rest it works fine. I need help about what is wrong at my code?! I can't able to insert the selected combo item and the generated id at the Calls table that I always facing these errors, thanks a lot!

reflective_mind
  • 1,475
  • 3
  • 15
  • 28
theEarlyRiser
  • 134
  • 12

1 Answers1

1

It seems that your combobox manages 'PriorityDetail' objects, not Strings. You should cast selected object to 'PriorityDetail' and then get data that you need from it.

PriorityDetail pd = (PriorityDetail) cbPriorityDetail.getSelectedItem();
call.setPriority(pd.getTheStringThatYouNeedFromYourModel());

Hope it helps.

eltabo
  • 3,749
  • 1
  • 21
  • 33
  • Hi eltabo!!! i've saw now the message, i've fixed the error here through trial and error i did like that: chamado.setPrioridade(cbPrioridadeDetalhe.getSelectedItem().toString()); and under i'm supposed to cast to int to it works... i thought strange i don't know the difference between cast with put the type in parentheses and with .toString(); thanks a lot for the help!!! – theEarlyRiser Oct 09 '16 at 00:46
  • Take a look at these explanations: [http://stackoverflow.com/questions/5289393/casting-variables-in-java](http://stackoverflow.com/questions/5289393/casting-variables-in-java) [http://stackoverflow.com/questions/3615721/how-to-use-the-tostring-method-in-java](http://stackoverflow.com/questions/3615721/how-to-use-the-tostring-method-in-java) – eltabo Oct 10 '16 at 06:14