| | |
JList DefaultListModel ClassCastException
Please support our Java advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Aug 2007
Posts: 2
Reputation:
Solved Threads: 0
I cannot explain this problem, and in searching all over I've seen a few leads but no help. I do not understand at all why I get this exception. It claims I am trying to cast a JList as a DefaultListModel when I'me trying to cast a ListModel and a DefaultListModel (yes, I instantiated the JList with a DefaultListModel).
I tried to reproduce this problem in a very simple setting; the same basic thing is happening, lines 11 and 171 are identical and set up the same way. However, this brought NO exception. What is going on?
Thanks for the help.
JAVA Syntax (Toggle Plain Text)
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel at SchoolClassDisplay.actionPerformed(SchoolClassDisplay.java:171) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
JAVA Syntax (Toggle Plain Text)
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JSeparator; import javax.swing.JPanel; import javax.swing.JList; import javax.swing.WindowConstants; import javax.swing.DefaultListModel; import java.util.ArrayList; public class SchoolClassDisplay implements ActionListener { private SchoolClass schoolClass; //class being edited private ActionListener ownerActionListener; //parent frame listener private String saveOptionActionCommand; //command for parent frame notification private String cancelOptionActionCommand; //command for parent frame notification public SchoolClassDisplay (ActionListener ownerFrameActionListener, String saveClassCommand, String cancelClassCommand, SchoolClass schClass) throws NullPointerException { /*if (ownerFrameActionListener == null) throw new NullPointerException ("ownerFrameActionListener cannot be null");*/ if (saveClassCommand == null) throw new NullPointerException ("saveTypeCommand cannot be null"); if (cancelClassCommand == null) throw new NullPointerException ("cancelTypeCommand cannot be null"); schoolClass = schClass; ownerActionListener = ownerFrameActionListener; saveOptionActionCommand = saveClassCommand; cancelOptionActionCommand = cancelClassCommand; } //GUI parts private JFrame frame; private JTextField name; private JTextField location; private JList times; private JButton addTime; //open add time slot prompt private JButton delTime; private JButton save; private JButton cancel; private DayTimeDisplay dayTimeEditor; //time slot editor private String saveDayTimeActionCommand = "saveDayTime";//command linking above to this public void show() { GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbc.anchor = GridBagConstraints.NORTHWEST; frame = new JFrame ("Class Editor"); frame.setLayout(gridBag); frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); if (schoolClass != null) frame.setTitle(schoolClass.getName()); JLabel a = new JLabel("Name: "); gbc.gridwidth = 1; gridBag.setConstraints(a, gbc); frame.add(a); name = new JTextField(""); if (schoolClass != null) name.setText(schoolClass.getName()); gbc.weightx = 1; gbc.gridwidth = GridBagConstraints.REMAINDER; gridBag.setConstraints(name, gbc); frame.add(name); a = new JLabel("Location: "); gbc.weightx = 0; gbc.gridwidth = 1; gridBag.setConstraints(a, gbc); frame.add(a); location = new JTextField(""); if (schoolClass != null) location.setText(schoolClass.getLocation()); gbc.weightx = 1; gbc.gridwidth = GridBagConstraints.REMAINDER; gridBag.setConstraints(location, gbc); frame.add(location); a = new JLabel("Times: "); gbc.weightx = 0; gbc.gridwidth = 1; gridBag.setConstraints(a, gbc); frame.add(a); times = new JList(new DefaultListModel()); if (schoolClass != null) times.setListData(schoolClass.getTimeSlots().toArray()); gbc.weightx = 1; gbc.weighty = 1; gbc.gridwidth = GridBagConstraints.REMAINDER; gridBag.setConstraints(times, gbc); frame.add(times); a = new JLabel(" "); gbc.weightx = 0; gbc.weighty = 1; gbc.gridwidth = 1; gridBag.setConstraints(a, gbc); frame.add(a); JPanel buttons1 = new JPanel(new GridLayout(1,2)); gbc.weightx = 1; gbc.weighty = 1; gbc.gridwidth = GridBagConstraints.REMAINDER; gridBag.setConstraints(buttons1, gbc); frame.add(buttons1); addTime = new JButton("Add"); addTime.addActionListener(this); addTime.setActionCommand("addTime"); buttons1.add(addTime); delTime = new JButton("Delete"); delTime.addActionListener(this); delTime.setActionCommand("delTime"); buttons1.add(delTime); JSeparator s = new JSeparator(); gbc.weightx = 0; gbc.weighty = 0; gridBag.setConstraints(s, gbc); frame.add(s); JPanel buttons2 = new JPanel(new GridLayout(1,2)); gridBag.setConstraints(buttons2, gbc); frame.add(buttons2); save = new JButton("Save"); save.addActionListener(this); save.addActionListener(ownerActionListener); save.setActionCommand(saveOptionActionCommand); buttons2.add(save); cancel = new JButton("Cancel"); cancel.addActionListener(this); cancel.addActionListener(ownerActionListener); cancel.setActionCommand(cancelOptionActionCommand); buttons2.add(cancel); JPanel blank = new JPanel(); blank.setPreferredSize(new java.awt.Dimension(0,0)); gbc.weightx = 1; gbc.weighty = 1; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.gridheight = GridBagConstraints.REMAINDER; gridBag.setConstraints(blank,gbc); frame.add(blank); frame.pack(); frame.setVisible(true); } public void actionPerformed (ActionEvent a) { //open add time slot dialogue if (a.getActionCommand().equals(addTime.getActionCommand())) { frame.setEnabled(false); dayTimeEditor = new DayTimeDisplay(this, saveDayTimeActionCommand, null); dayTimeEditor.show(); } //remove time slot if (a.getActionCommand().equals(delTime.getActionCommand())) { if (times.getSelectedIndex() != -1) { ((DefaultListModel)(times.getModel())).remove(times.getSelectedIndex()); } } //command received from time slot editor indicating "Add" pressed finalizing creation if (a.getActionCommand().equals(saveDayTimeActionCommand)) { frame.setEnabled(true); frame.requestFocus(); DayTime oldDayTime = dayTimeEditor.getUneditedAssignment(); //store old if was editing mode DayTime newDayTime = dayTimeEditor.getSavedAssignment(); if(newDayTime == null) //failed creation return; if (oldDayTime == null) ((DefaultListModel)(times.getModel())).addElement(newDayTime); else { int index = ((DefaultListModel)(times.getModel())).indexOf(oldDayTime); ((DefaultListModel)(times.getModel())).set(index, newDayTime); } } } //test purposes only public static void main (String[] args) { ArrayList<DayTime> daytimes = new ArrayList<DayTime>(); int[] days1 = {0,1,0,1,0,1,0}; int[] days2 = {0,0,1,0,1,0,0}; daytimes.add(new DayTime(days1,10,30)); daytimes.add(new DayTime(days2,14,30)); SchoolClass associatedClass1 = new SchoolClass("Math","School",daytimes); SchoolClassDisplay a = new SchoolClassDisplay (null, "saveClass", "cancelClass", associatedClass1); a.show(); } }
I tried to reproduce this problem in a very simple setting; the same basic thing is happening, lines 11 and 171 are identical and set up the same way. However, this brought NO exception. What is going on?
JAVA Syntax (Toggle Plain Text)
import javax.swing.*; public class dfgdrtgrtg { private JList times; public dfgdrtgrtg () { times = new JList(new DefaultListModel()); DefaultListModel listModel = (DefaultListModel)(times.getModel()); } public static void main (String[] args) { dfgdrtgrtg a = new dfgdrtgrtg(); } }
Thanks for the help.
•
•
Join Date: Aug 2007
Posts: 2
Reputation:
Solved Threads: 0
Finally figured out the problem:
When I called times.setListData(Object[] array)
JList constructs a new instance of the ListModel based on its own internal, incompatible with DefaultListModel, ListModel; as if I never used the constructor passing in a DefaultListModel.
Data then must be added one at a time.
When I called times.setListData(Object[] array)
JList constructs a new instance of the ListModel based on its own internal, incompatible with DefaultListModel, ListModel; as if I never used the constructor passing in a DefaultListModel.
Data then must be added one at a time.
![]() |
Similar Threads
- Getting my data back from my JList (Java)
- First JLIST, used with GUI Inventory (Java)
- updating a JList (Java)
- How to use JList (Java)
- Populate data from database into JList (Java)
- A Default size for a blank JList? (Java)
Other Threads in the Java Forum
- Previous Thread: save file to database
- Next Thread: Java sound API
Views: 2861 | Replies: 1
| Thread Tools | Search this Thread |
Tag cloud for Java
3d @param affinetransform android api apple applet application arc arguments array arrays automation binary bluetooth byte c# chat class classes click client code compare component corrupted database detection draw eclipse error event exception file fractal game givemetehcodez graphics gui guitesting helpwithhomework html ide image input integer j2me java java.xls javaprojects jmf jni jpanel julia keytool linux list loop map method methods mobile netbeans newbie number object oracle os pong print problem producer program programming project projectideas read recursion reflection replaysolutions rim scanner screen server set size sms socket sort sql string swing terminal test threads time transfer tree web windows





