Usando Object

Esta correto o uso de Object desta forma? estranho que funciona, mas logo abaixo tenho a mensagem do compilador.


 Object x = JOptionPane.showConfirmDialog(null,"Deseja alterar este CFOP?","Alterar CFOP",JOptionPane.YES_NO_OPTION);

            if(x.equals(JOptionPane.YES_OPTION))
            {
               
                
            }


Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException
        at java.lang.Class.cast(Class.java:2990)
        at org.jdesktop.beansbinding.Binding.convertReverse(Binding.java:1321)
        at org.jdesktop.beansbinding.Binding.getTargetValueForSource(Binding.java:909)
        at org.jdesktop.beansbinding.Binding.saveUnmanaged(Binding.java:1268)
        at org.jdesktop.beansbinding.Binding.save(Binding.java:1254)
        at org.jdesktop.beansbinding.AutoBinding.trySaveThenRefresh(AutoBinding.java:176)
        at org.jdesktop.beansbinding.AutoBinding.targetChangedImpl(AutoBinding.java:249)
        at org.jdesktop.beansbinding.Binding.targetChanged(Binding.java:1433)
        at org.jdesktop.beansbinding.Binding.access$1300(Binding.java:38)
        at org.jdesktop.beansbinding.Binding$PSL.propertyStateChanged(Binding.java:1620)
        at org.jdesktop.beansbinding.PropertyHelper.firePropertyStateChange(PropertyHelper.java:212)
        at org.jdesktop.beansbinding.BeanProperty.notifyListeners(BeanProperty.java:712)
        at org.jdesktop.beansbinding.BeanProperty.access$1000(BeanProperty.java:143)
        at org.jdesktop.beansbinding.BeanProperty$SourceEntry.cachedValueChanged(BeanProperty.java:369)
        at org.jdesktop.beansbinding.BeanProperty$SourceEntry.propertyValueChanged(BeanProperty.java:409)
        at org.jdesktop.beansbinding.BeanProperty$SourceEntry.propertyChange(BeanProperty.java:414)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
        at org.jdesktop.swingbinding.adapters.BeanAdapterBase.firePropertyChange(BeanAdapterBase.java:112)
        at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.tableSelectionChanged(JTableAdapterProvider.java:81)
        at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.valueChanged(JTableAdapterProvider.java:91)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:388)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:398)
        at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:442)
        at javax.swing.JTable.changeSelectionModel(JTable.java:2352)
        at javax.swing.JTable.changeSelection(JTable.java:2421)
        at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1085)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1008)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
        at java.awt.Component.processMouseEvent(Component.java:6260)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Bom, você aí mistura Object com auto-boxing, além de fazer confusão com o funcionamento do método equals. O ideal mesmo é usar ints.

Tem razão é que estou pegando o jeito de programar com java agora, e achei curioso esse POG que acabou curiosamente dando certo…rs, j a tinha implementado com int.

E a propósito estou usando o DeaultTableModel, conforme você indicou e estou estudando ela bem, meu unico problema é com os títulos da tabela que aparecem A e B ao invés de CLIENTE e PRODUTO

Eu sempre indico não usar o DefaultTableModel.

Se você está fazendo seu próprio TableModel os títulos aparecem assim pq vc ainda não sobrescreveu o método getColumnName.

correto me confundi …rs desculpas, vou tentar dessa vez.

Consegui fazer funcionar e foi um erro bobo de grafia do método…rs, eu coloquei getColunmName ao invés de getColumnName que sobrescreve o método, agora sim vou refazer um projeto que estava com DefaultTableModel.

Para evitar erros desse tipo, coloque a anotação @Override quando sobrescrever um método:

@Override
public String getColumnName(int columnNumber) {
}

Assim, se você cometer um erro de digitação, o compilador te avisa que o método que você criou não está sobrescrevendo nenhum método da classe pai, ao invés de encarar aquilo como um método novo.

É útil também caso você seja o dono das duas classes, mude o nome no pai, e não queira esquecer de mudar nenhum nome nas filhas.