I select data from JTable , return data of type Object . In the future, my data needs to be displayed in JTextField .
But there was a problem: the data needs to be converted to a String so that it is displayed in the JTextField . I have already tried everything and so:

 Deptno.setText((String) varDeptno); 

so:

 Deptno.setText(String.format(varDeptno)); 

How can you still convert an Object ? And correct the error:

 Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String at appdirectory_views.UpdateDeptFrame.<init>(UpdateDeptFrame.java:66) at appdirectory_views.AppDirectoryMainFrame$6.actionPerformed(AppDirectoryMainFrame.java:193) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6516) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6281) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4872) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) at java.awt.EventQueue.access$300(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:706) at java.awt.EventQueue$3.run(EventQueue.java:704) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:720) at java.awt.EventQueue$4.run(EventQueue.java:718) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

Code:

 dbTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 1) {//одинарный щелчок int row = dbTable.rowAtPoint(e.getPoint()); if (row > -1) { int realRow = dbTable.convertRowIndexToModel(row); rRow = realRow; } } } }); public Object getDeptDeptno() { Object varDeptno = dbtm.getValueAt(rRow, 0); return varDeptno; } public Object getDeptDname() { Object varDname = dbtm.getValueAt(rRow, 1); return varDname; } public Object getDeptLoc() { Object varLoc = dbtm.getValueAt(rRow, 2); return varLoc; } 

And in the second frame:

 Object vDeptno = frame15.getDeptDeptno(); Object vDname = frame15.getDeptDname(); Object vLoc = frame15.getDeptLoc(); deptnoField = new JTextField(2); deptnoField.setText((String)vDeptno); aField.setText((String)vDeptno); dnameField = new JTextField(14); dnameField.setText((String)vDname); locField = new JTextField(13); locField.setText((String)vLoc); 
  • And how do you take data from JTable ? You have a BigDecimal cast problem in String - LEQADA
  • And why do you return as an Object ? Anyway, you can always just call the toString() method on an object and get a string. - Regent
  • Regent, didn’t use it because he didn’t know about him - Alexandr Semenets
  • And you're right, I did this: deptnoField.setText(vDeptno.toString()); and it all worked - Alexandr Semenets
  • one
    @YuriySPb Yes, I’m fine as usual - in the comments :) But the answer, which is remarkable, was that no one designed it, so I tried to stretch one sentence from the commentary into a whole answer. - Regent

1 answer 1

The Object class has a public method String toString () , which returns a textual representation of the object.
The toString method in the Object class itself returns little information that is useful to the user, but in some classes it is redefined, and the return value is quite visual. Including in the class BigDecimal , which, judging by the stacktrace, belongs to varDeptno .

Therefore, if you write this:

 deptnoField.setText(vDeptno.toString()); 

That it is not necessary to lead object to any class that is sometimes fraught with ClassCastException .