Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Deleting items from JList

18 views
Skip to first unread message

CBO

unread,
Jul 8, 2008, 5:35:53 AM7/8/08
to
Hi all,

I am currently developing a java application that uses JLists and when
the user has has pressed the delete button it will then remove the
selected item or the selected items from the JList and write what's
left into a file.

This is working absolutely fine except for the last item inside the
JList. There is one remaining item inside the JList and I want to
delete it. When i select the item and press the delete button it
removes the item from the JList and then the program falls over. The
error is:

Exception occurred during event dispatching:
java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at
remoteshutdown.ExceptionsList.btnDelete_actionPerformed(ExceptionsList.java:
233)
at
remoteshutdown.ExceptionsList_btnDelete_actionAdapter.actionPerformed(ExceptionsList.java:
279)
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.pumpEventsForFilter(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at
remoteshutdown.mainScreen.jMenuOptionsExceptions_actionPerformed(mainScreen.java:
979)
at remoteshutdown.mainScreen
$mainScreen_jMenuOptionsExceptions_ActionAdapter.actionPerformed(mainScreen.java:
1145)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI
$Handler.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)

It does not go further than removing the Item from the JList and
doesn't write the file. Just stops the program at that point. Below is
the code that I am using:

public void btnDelete_actionPerformed(ActionEvent e) {
this.lstComputerExceptions.getModel();
if (lstComputerExceptions.getSelectedIndices().length > 0) {
int[] tmp = this.lstComputerExceptions.getSelectedIndices();
int[] selectedIndicies =
lstComputerExceptions.getSelectedIndices();
for (int i = tmp.length - 1; i >= 0; i--) {
selectedIndicies = lstComputerExceptions.getSelectedIndices();
model.removeElementAt(selectedIndicies[i]);
}

String computerName = model.toString();
StringTokenizer st = new StringTokenizer(computerName, "[]");

// if (computerName != null) {


/*} else {*/
String tokenizedString = st.nextToken();
String newComputers = tokenizedString.replace(",", "\n");
System.out.println(newComputers);
try {
BufferedWriter out = new BufferedWriter(
new FileWriter(
"C:\\Documents and Settings\\All Users\\Application Data\
\Remote Shutdown\\ExceptionsList.csv",
false));
out.write(newComputers);
out.write("\n");
out.close();
} catch (IOException ex) {
statusBar.setForeground(Color.red);
statusBar
.setText("Failed to modify file. Please ensure the file is not
open");
System.err.println("Unable to delete: " + ex.toString());
}
}
}

Any help in this matter would be highly appreciated. Thank you

Sabine Dinis Blochberger

unread,
Jul 8, 2008, 6:29:56 AM7/8/08
to
CBO wrote:

> snip

My first impression below (did not try to re-create).

> I am currently developing a java application that uses JLists and when
> the user has has pressed the delete button it will then remove the
> selected item or the selected items from the JList and write what's
> left into a file.
>
>

> Exception occurred during event dispatching:
> java.util.NoSuchElementException
> at java.util.StringTokenizer.nextToken(Unknown Source)
>

This is a hint ;)

> It does not go further than removing the Item from the JList and
> doesn't write the file. Just stops the program at that point. Below is
> the code that I am using:
>
> public void btnDelete_actionPerformed(ActionEvent e) {
> this.lstComputerExceptions.getModel();
> if (lstComputerExceptions.getSelectedIndices().length > 0) {
> int[] tmp = this.lstComputerExceptions.getSelectedIndices();
> int[] selectedIndicies =
> lstComputerExceptions.getSelectedIndices();
> for (int i = tmp.length - 1; i >= 0; i--) {
> selectedIndicies =
> lstComputerExceptions.getSelectedIndices();
> model.removeElementAt(selectedIndicies[i]);
> }
> String computerName = model.toString();
> StringTokenizer st = new StringTokenizer(computerName, "[]");
>
> // if (computerName != null) {
>
>
> /*} else {*/
> String tokenizedString = st.nextToken();

If you removed the last item, this can't work. There is no next. You
need to insert a condition that checks if any nodes are left.

Rather then convert the model to a string, can't you use something like

ListModel model = myList.getModel();
for(int i = 0; i < model.getSize(); i++) {
System.out.println(model.getElementAt(i));
}

which wouldn't fail (thorw an exception) when the model has no nodes.
Then you can write an empty file by checking the size.

See <http://java.sun.com/javase/6/docs/api/javax/swing/JList.html>


> String newComputers = tokenizedString.replace(",", "\n");
> System.out.println(newComputers);
> try {
> BufferedWriter out = new BufferedWriter(
> new FileWriter(
>
> "C:\\Documents and Settings\\All Users\\Application Data\
> \Remote Shutdown\\ExceptionsList.csv",
> false));
> out.write(newComputers);
> out.write("\n");
> out.close();
> } catch (IOException ex) {
> statusBar.setForeground(Color.red);
> statusBar
> .setText("Failed
> to modify file. Please ensure the file is not
> open");
> System.err.println("Unable to
> delete: " + ex.toString());
> }
> }
> }
>
> Any help in this matter would be highly appreciated. Thank you

--
Sabine Dinis Blochberger

Op3racional
www.op3racional.eu

0 new messages