My Delete button is not working

GUI Inventory List with 5 classes

Page 1 of 1

5 Replies - 3723 Views - Last Post: 18 November 2007 - 01:13 AM Rate Topic: -----

#1 ITXavier25  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 07

My Delete button is not working

Posted 17 November 2007 - 07:11 PM

My delete button is not working and I must get it working by tomorrow. This is my final assignment, and I must get this thing working. Can anyone show me what is wrong with my assignment and how to correct it. My assignment statement is below as well as 5 classes. InventoryGUI is the main class to begin execution. I have a Data folder that contains my logo and inventory dat. file that goes with the code; however I'm not allowed to attach a dat file to the post. You can create your own Data folder and place my logo in it; you can create a new inventory dat. file just by using the "Save" option. Thanks!

Final Project: Inventory Program Part 6
Resource: Appendix B
Due Date: Day 7 [Individual] forum
Modify the Inventory Program to include an Add button, a Delete button, and a Modify button on the GUI. These buttons should allow the user to perform the corresponding actions on the item name, the number of units in stock, and the price of each unit.An item added to the inventory should have an item number one more than the previous last item.
Add a Save button to the GUI that saves the inventory to a C:\data\inventory.dat file.
Use exception handling to create the directory and file if necessary.
Add a search button to the GUI that allows the user to search for an item in the inventory by the product name. If the product is not found, the GUI should display an appropriate message. If the product is found, the GUI should display that products information in the
GUI.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.Image;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class InventoryGUI extends JFrame implements ActionListener,Serializable 
{
   private JTextArea textArea;
   
   private JButton first,
				   next,
				   previous,
				   last,
				   add,
				   modify,
				   delete,
				   save,
				   search,
				   exit;
   JLabel imageLabel;
   
   private static Inventory inv = new Inventory();

   /**
	 * @param arg0
	 * @throws HeadlessException
	 */
   public InventoryGUI( String arg0 ) throws HeadlessException 
   {
	  super( "Inventory GUI" );
	  
	  textArea = new JTextArea( 250,30 );

	  JScrollPane scrollPane = new JScrollPane( textArea ); 

	  textArea.setEditable( false );

	  scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

	  scrollPane.setPreferredSize( new Dimension( 250, 250 ) );

	  JPanel cp = new JPanel();

	  cp.setSize( 250, 40 );

	  cp.setLayout( new BorderLayout() );

	  cp.add( scrollPane,BorderLayout.CENTER );
	  
	  JPanel buttonPaenl = new JPanel();
	  
	  JPanel buttonPaenl1 = new JPanel();

	  first = new JButton( "First" );
	  first.addActionListener( this );
	  
	  search = new JButton( "Search" );
	  search.addActionListener( this );
	  
	  next = new JButton( "Next" );
	  next.addActionListener( this );

	  previous = new JButton( "Previous" );
	  previous.addActionListener( this );

	  last = new JButton( "Last" );
	  last.addActionListener( this );

	  add = new JButton( "Add" );
	  add.addActionListener( this );

	  modify = new JButton( "Modify" );
	  modify.addActionListener( this );
		
	  delete = new JButton( "Delete" );
	  delete.addActionListener( this );

	  save = new JButton( "Save" );
	  save.addActionListener( this );

	  exit = new JButton( "Exit" );
	  exit.addActionListener( this );
		
	  buttonPaenl.setLayout( new FlowLayout() );
	  buttonPaenl1.setLayout( new FlowLayout() );
	  buttonPaenl.add( first );
	  buttonPaenl.add( previous );
	  buttonPaenl.add( next );
	  buttonPaenl.add( last );
	  buttonPaenl1.add( add );
	  buttonPaenl1.add( modify );
	  buttonPaenl1.add( delete );
	  buttonPaenl1.add( save );
	  buttonPaenl1.add( search );
	  buttonPaenl1.add( exit );

	  cp.add( buttonPaenl,BorderLayout.SOUTH );
	  cp.add( buttonPaenl1,BorderLayout.NORTH );

	  ImageIcon icon = new ImageIcon( "C:\\data\\logo.gif","a pretty but meaningless splat" );
	  imageLabel = new JLabel( "Xavier", icon, JLabel.CENTER );
	  cp.add( imageLabel,BorderLayout.EAST );
	  this.setContentPane( cp );

	  this.setTitle( " Week Nine Final Project: Inventory Program Part Six - Transformers Autobot Inventory ( More Than Meets the Eye o_0/>?! ) " );

	  this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	  this.textArea.setText(inv.getFirst());
	  this.setSize(400, 400);
	  this.pack();
	  this.setVisible( true );
   }

   @Override
   public void actionPerformed( ActionEvent e ) 
   {
	  // TODO Auto-generated method stub
	  if( e.getActionCommand().equals( "First" ) )
	  {
		 textArea.setText( inv.getFirst() );
	  }
	  
	  if( e.getActionCommand().equals( "Next" ) )
	  {
		 textArea.setText(inv.getNext());
	  }
		
	  if( e.getActionCommand().equals( "Previous" ) )
	  {
		 textArea.setText( inv.getPrevious() );
	  }
	  
	  if( e.getActionCommand().equals( "Last" ) )
	  {
		 textArea.setText(inv.getLast());
	  }
	  
	  if( e.getActionCommand().equals( "Save" ) )
	  {
		 save();
	  }
		
	  if( e.getActionCommand().equals( "Exit" ) )
	  {
		 System.exit(0);
	  }
		
	  if( e.getActionCommand().equals( "Add" ) ) 
	  {
		 InventoryDialogue id = new InventoryDialogue( true," Add a new Inventory " );
	  }
	  
	  if( e.getActionCommand().equals( "Modify" ) )
	  {
		 InventoryDialogue id = new InventoryDialogue( false," Modify Inventory " );
	  }
	  
	  if( e.getActionCommand().equals( "Search" ) )
	  {
		 String s = JOptionPane.showInputDialog( null, " Enter Product Name ",null, 1 );
		 
		 s = inv.Search(s);
		 
		 if( s == null )
		 {
			JOptionPane.showMessageDialog( this, " No Results Found " );
		 } 
			
		 else textArea.setText( s );
			
		 if( e.getActionCommand().equals( "Delete" ) )
		 {
			inv.getproducts().remove( inv.index );
	   	 }
	  }
   }
   
   public void save()
   {
	  File f = new File( "C:\\data\\inventory.dat" );
	  
	  try 
	  {
		 FileOutputStream out = new FileOutputStream( f );
		 
		 try 
		 {
			ObjectOutputStream objectOut = new ObjectOutputStream( out );
			   objectOut.writeObject( inv );
		 } 
		 
		 catch (IOException e) 
		 {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog( null, e.getMessage() );
			   e.printStackTrace();
		 }
	  } 
	  
	  catch ( FileNotFoundException e ) 
	  {
		 // TODO Auto-generated catch block
		 JOptionPane.showMessageDialog( null, e.getMessage() );
			e.printStackTrace();
	  }

   }  

   public static Inventory getInv() 
   {
	  return inv;
   }

   public static void setInv( Inventory inv ) 
   {
	  InventoryGUI.inv = inv;
   }

   /**
	* @param args
	*/
   public static void main( String[] args ) 
   {
	  InventoryGUI inventory = new InventoryGUI( "Inventory" );
   }
}


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class InventoryDialogue extends JFrame implements ActionListener
{
   private boolean status = false; //false is for modify
   
   JTextField nameTextField,
			  unitTextField,
			  priceTextField;
   
   JLabel nameLabel,
		  unitLabel,
		  priceLabel;
	
   JPanel TextFields,
		  buttons;
   
   JButton modify, 
		   add;
	
   public InventoryDialogue( Boolean stat, String title )
   {
	  super( title );
	  status = stat;
	  JPanel but = new JPanel();
	  modify = new JButton( "Modify" );
	  modify.addActionListener( this );
	  add = new JButton( "Add" );
	  add.addActionListener( this );
	  but.add( add );
	  but.add( modify );
	  
	  if( status == false )
	  {
		 add.setVisible( false );
	  }
	  
	  else
	  {
		 modify.setVisible( false );
	  }
	  
	  nameTextField = new JTextField( "", 20 );
	  unitTextField = new JTextField( "", 5 );
	  priceTextField = new JTextField( "" , 5 );
	  nameLabel = new JLabel( "Name" );
	  unitLabel = new JLabel( "Units" );
	  priceLabel = new JLabel( "Price per Unit" );
	  JPanel p = new JPanel();

	  p.setLayout( new FlowLayout() );
	  p.add( nameLabel );
	  p.add( nameTextField );
	  p.add( unitLabel );
	  p.add( unitTextField );
	  p.add( priceLabel );
	  p.add( priceTextField );
	  JPanel cp = new JPanel();
	  cp.setLayout( new BorderLayout() );
	  cp.add( p, BorderLayout.CENTER );
	  cp.add( but, BorderLayout.EAST );
	  this.setContentPane( cp );
	  this.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
	  this.pack();
	  this.setVisible( true );
   }

   @Override
   public void actionPerformed( ActionEvent arg0 ) 
   {
	  if( arg0.getActionCommand().equals( "Add" ) )
	  {
		 String name;
		 int units;
		 Double price;
		 name = nameTextField.getText();
	  
		 try 
		 {
			units = Integer.parseInt( unitTextField.getText() );
		 } 
	  
		 catch ( NumberFormatException e ) 
		 {
			JOptionPane.showMessageDialog( null, e.getMessage() );
		 
			e.printStackTrace();
		 
			return;
		 }
	  
		 try 
		 {
			price = Double.parseDouble( priceTextField.getText() );
		 } 
	  
		 catch ( NumberFormatException e ) 
		 {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog( null, e.getMessage() );

			e.printStackTrace();
		 
			return;
		 }
			
		 InventoryGUI.getInv().getproducts().add( new ProductModified( name, InventoryGUI.getInv().products.size(), 
																	   units,price ) );
	  
		 this.dispose();
	  }

	  if( arg0.getActionCommand().equals( "Modify" ) )
	  {
		 String name;
		 int units;
		 Double price;
		 name = nameTextField.getText();
	  
		 try 
		 {
			units = Integer.parseInt( unitTextField.getText() );
		 } 
	  
		 catch ( NumberFormatException e ) 
		 {
			JOptionPane.showMessageDialog( null,"Please Enter Valid Integers" );
		 
			e.printStackTrace();
		 
			return;
		 }
			
		 try 
		 {
			price = Double.parseDouble( priceTextField.getText() );
		 } 
	  
		 catch ( NumberFormatException e ) 
		 {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog( null,"Please Enter Valid Price" );

			//e.printStackTrace();
			return;
		 }
			
		 InventoryGUI.getInv().getproducts().set( InventoryGUI.getInv().index, 
			new ProductModified( name, InventoryGUI.getInv().index, units, price ) );
			
		 this.dispose();
	  }

   }
   
   public static void main( String args[] )
   {
	  InventoryDialogue idf = new InventoryDialogue( true,"cc" );
   }
}


import java.text.Collator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Locale;


public class Inventory 
{
   private String inventoryName; // name of inventory
   
   public String restockRate; // restock rate percentage
   
   public double totalRestock;

   public static int index;

   public ArrayList < ProductModified > products = new ArrayList < ProductModified > ();

   public Inventory()
   {
	  products.add( new ProductModified( "No Sale Bot", 0, 1, 0.00 ) );
	  products.add( new ProductModified( "Optimus Prime", 7, 52, 160.00 ) );
	  products.add( new ProductModified( "BumbleeBee", 16, 61, 97.00 ) );
	  products.add( new ProductModified( "Ironhide", 25, 106, 88.00 ) );
	  products.add( new ProductModified( "Ratchet", 34, 125, 79.00 ) );
	  products.add( new ProductModified( "Jazz", 0, 124, 70.00 ) );
	  
	  index = 0;
   }
	
   public void sort()
   {
	  Locale loc = Locale.ENGLISH;
	   
	  ProductModified Temp;
	   
	  Collator col = Collator.getInstance( loc );
	   
	  for ( int i = 0; i < products.size(); i++ ) 
	  {
		 for ( int j = i + 1; j < products.size(); j++ )
		 {
			if( col.compare( products.get( i ).getAutobotName(), products.get( j ).getAutobotName() ) > 0 )
			{
			   Temp = products.get( i );
				
			   products.set( i, products.get( j ) );
			   products.set( j, Temp );
			}
		 }
	  }
   }
	
   public String getInventoryName() 
   {
	  return inventoryName;
   }
	
	public void setInventoryName( String inventoryName ) 
	{
	   this.inventoryName = inventoryName;
	}
	
	public String getRestockRate() 
	{
	   return restockRate;
	}
	
	public void setRestockRate( String restockRate ) 
	{
	   this.restockRate = restockRate;
	}
	
	public double getTotalRestock() 
	{
	   return totalRestock;
	}
	
	public void setTotalRestock( double totalRestock ) 
	{
	   this.totalRestock = totalRestock;
	}
	
	public ArrayList < ProductModified > getproducts() 
	{
	   return products;
	}
	
	public void seproducts( ArrayList < ProductModified > products) 
	{
	   this.products = products;
	}
	
	public String toString()
	{
	   String transformersSub = new String(" ");

	   transformersSub = "Welcome to the\n" + getInventoryName() + "!\n\n";

	   transformersSub = transformersSub + "Below is the available inventory:\n\n";

	   transformersSub = transformersSub + "The restock interest rate is at " + getRestockRate() + ".\n\n";

	   transformersSub = transformersSub + "Index\tProductModified #\t\t\tName\t\tUnits\t\tPrice\t\t";

	   transformersSub = transformersSub + "Unit Restock Value\t";	

	   transformersSub = transformersSub + "Stock Value\t\t";

	   transformersSub = transformersSub + "Total ProductModified Restock\n";
	   
	   Iterator < ProductModified > i = this.getproducts().iterator();
	   
	   while(i.hasNext())
	   {
		  transformersSub = transformersSub + i.next();
	   }
	   
	  return transformersSub;
   }
   
   public Double getTotal()
   {
	  Double Total = 0.0;
	  
	  ProductModified p;
	  
	  Iterator < ProductModified > i = products.iterator();
	  
	  while( i.hasNext() )
	  {
			p = i.next();
			
			Total = Total + p.getPrice() * p.getUnit();
	  }
	  
	  return Total;
   }

   public String processOutPut( ProductModified p )
   {
	  String out = "Welcome to the Transformers Autobot Toy Inventory\n\nTotal Inventory = " 
	  + this.getTotal() + "\nRestocking Fee = 5%" 
	  + "\n\nItem #\tName\tUnit\tPrice\tUnit Restock Value" 
	  + p;
	  
	  return out;
   }
   
   public String getFirst()
   {
	  index = 0;
	  
	  return processOutPut( products.get(0) );
	
   }
   
   public String getLast()
   {
	  index = products.size() - 1;
	  
	  return processOutPut( products.get( products.size() - 1 ) );
   }
	
   public String getNext()
   {
	  if( index == products.size() - 1 ) 
	  {
		 getFirst();
		  
		 return getFirst();
	  } 
	  
	  else
	  {
		 index++;
		 
		 return processOutPut( products.get( index ) );
	  }
   }
   
   public String getPrevious()
   {
	  if( index == 0 )
	  {
		 return getLast();
	  } 
	  
	  else
			
	  return processOutPut(products.get(--index));
   }
   
   public String Search( String Search )
   {
	  Iterator < ProductModified > i = products.iterator();
   
	  String te = null;
   
	  ProductModified p;
	  
	  while( i.hasNext() )
	  {
		 p = i.next();
	  
		 if( p.getAutobotName().equals( Search ) )
		 {
			te = processOutPut( p );
		 }
	  }
	  
	  return te;
   }
}


import static java.lang.System.out;


//class declaration for TransformersProduct
public class Product
{
   public String autobotName; // array of autobot toy names
   public int productNumber; // product # array ID for product
   public int unit; // array of autobot toy units
   public double price; // array of autobot prices
   public double inventoryValue;
	
   /**
	* @param autobotName
	* @param productNumber
	* @param unit		   
	* @param price
	*/
   
   public Product( String autobotName, int productNumber, int unit,
				   double price ) 
   {
	  super();
	  this.autobotName = autobotName;
	  this.productNumber = productNumber;
	  this.unit = unit;
	  this.price = price;
   }

   public String getAutobotName() 
   {
	  return autobotName;
   }
   
   public void setAutobotName( String autobotName ) 
   {
	  this.autobotName = autobotName;
   }

   public int getProductNumber() 
   {
	  return productNumber;
   }
	
   public void setProductNumber( int productNumber ) 
   {
	  this.productNumber = productNumber;
   }
   
   public int getUnit() 
   {
	  return unit;
   }
   
   public void setUnit( int unit ) 
   {
	  this.unit = unit;
   }
   
   public double getPrice() 
   {
	  return price;
   }
   
   public void setPrice( double price ) 
   {
	  this.price = price;
   }
	
   public double getInventoryValue() 
   {
	  return inventoryValue;
   }
	
   public Double inventoryValue()
   {
	  return this.getPrice() * this.getUnit();
   }
   
   public String toString()
   {
	  return "\n"+this.productNumber+"\t"+this.autobotName+"\t"+this.unit +"\t"+this.price+ "\t"; 
   }
}

public class ProductModified extends Product 
{
   public ProductModified( String autobotName, int productNumber, int unit,
						   double price ) 
   {
	  super( autobotName, productNumber, unit, price );
	  this.inventoryValue = this.inventoryValue();
	  // TODO Auto-generated constructor stub
   }
	
   public Double inventoryValue()
   {
	  return this.getUnit() * this.getPrice() + this.getUnit() * this.getPrice() * 0.05;
   }
   
   public String toString()
   {
	  return "\n" + this.productNumber + "\t" + this.autobotName 
				  + "\t" + this.unit + "\t" + this.price + "\t" 
				  + this.getInventoryValue(); 
   }
}



Attached Image

This post has been edited by ITXavier25: 17 November 2007 - 10:04 PM


Is This A Good Question/Topic? 0
  • +

Replies To: My Delete button is not working

#2 ITXavier25  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 07

Re: My Delete button is not working

Posted 17 November 2007 - 10:07 PM

Sorry, I messed up on posting the code. I just edited the code and it should be correct. Again, someone help. Thanks!

This post has been edited by ITXavier25: 17 November 2007 - 11:52 PM

Was This Post Helpful? 0
  • +
  • -

#3 Martyr2  Icon User is offline

  • Programming Theoretician
  • member icon

Reputation: 5074
  • View blog
  • Posts: 13,697
  • Joined: 18-April 07

Re: My Delete button is not working

Posted 17 November 2007 - 11:30 PM

Hi ITXavier25,

The reason your delete code is not activating is because you actually check the getActionCommand.equals("Delete") inside your search button's code. You have to move it outside of the search button's code body. So move it down past the closing curly brace of your search button code and you should see it magically starting to activate. Now as for the code in its body being right, you will know when you make this change.

Good luck. :)
Was This Post Helpful? 0
  • +
  • -

#4 ITXavier25  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 07

Re: My Delete button is not working

Posted 17 November 2007 - 11:56 PM

View PostMartyr2, on 17 Nov, 2007 - 11:30 PM, said:

Hi ITXavier25,

The reason your delete code is not activating is because you actually check the getActionCommand.equals("Delete") inside your search button's code. You have to move it outside of the search button's code body. So move it down past the closing curly brace of your search button code and you should see it magically starting to activate. Now as for the code in its body being right, you will know when you make this change.

Good luck. :)


I managed to get the "Delete" button to work. Thank you so much for the advice. Yes, it was a matter of a misplaced bracket in the Inventory GUI code. Below is the part that was incorrect.

	  if( e.getActionCommand().equals( "Search" ) )
	  {
		 String s = JOptionPane.showInputDialog( null, " Enter Product Name ",null, 1 );
		 
		 s = inv.Search(s);
		 
		 if( s == null )
		 {
			JOptionPane.showMessageDialog( this, " No Results Found " );
		 } 
			
		 else textArea.setText( s );
			
		 if( e.getActionCommand().equals( "Delete" ) )
		 {
			inv.getproducts().remove( inv.index );
	   	 }
	  }


Here's the correction...

	  if( e.getActionCommand().equals( "Modify" ) )
	  {
		 InventoryDialogue id = new InventoryDialogue( false," Modify Inventory " );
	  }
	  
	  if( e.getActionCommand().equals( "Search" ) )
	  {
		 String s = JOptionPane.showInputDialog( null, " Enter Product Name ",null, 1 );
		 
		 s = inv.Search(s);
		 
		 if( s == null )
		 {
			JOptionPane.showMessageDialog( this, " No Results Found " );
		 } 
			
		 else textArea.setText( s );
	  }
			
	  if( e.getActionCommand().equals( "Delete" ) )
	  {
		 inv.getproducts().remove( inv.index );
	  }




I do have one last problem dealing with the "Save" button execution.

When I click on save, it does create a inventory.dat file in my Data folder located my C: drive. However, when I review my General Output screen, I get this message:

"--------------------Configuration: <Default>--------------------
java.io.NotSerializableException: Inventory
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at InventoryGUI.save(InventoryGUI.java:211)
at InventoryGUI.actionPerformed(InventoryGUI.java:161)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.window.dispatchEventImpl(window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)"

Is this normal? Is the program saving correctly? I have no idea if it is because I don't know what program to use to open the inventory.dat file to check. When I click on it, the file opens in notepad and I get...

" {sr java.io.NotSerializableException(Vx 5 xr java.io.ObjectStreamExceptiondk9 xr java.io.IOExceptionlsde% xr java.lang.Exception>; xr java.lang.Throwable5'9w L causet Ljava/lang/Throwable;L
detailMessaget Ljava/lang/String;[
stackTracet [Ljava/lang/StackTraceElement;xpq ~ t Inventoryur [Ljava.lang.StackTraceElement;F*<<"9 xp sr java.lang.StackTraceElementa Ś&6݅ I
lineNumberL declaringClassq ~ L fileNameq ~ L
methodNameq ~ xp t java.io.ObjectOutputStreamt ObjectOutputStream.javat writeObject0sq ~ Fq ~ q ~ t writeObjectsq ~ t InventoryGUIt InventoryGUI.javat savesq ~ q ~ q ~ t actionPerformedsq ~ t javax.swing.AbstractButtont AbstractButton.javat fireActionPerformedsq ~ t "javax.swing.AbstractButton$Handlerq ~ q ~ sq ~ t javax.swing.DefaultButtonModelt DefaultButtonModel.javaq ~ sq ~ q ~ q ~ !t
setPressedsq ~ t *javax.swing.plaf.basic.BasicButtonListenert BasicButtonListener.javat
mouseReleasedsq ~ t java.awt.Componentt Component.javat processMouseEventsq ~ t javax.swing.JComponentt JComponent.javaq ~ +sq ~ q ~ )q ~ *t processEventsq ~ 
t java.awt.Containert Container.javaq ~ 0sq ~ :q ~ )q ~ *t dispatchEventImplsq ~ Dq ~ 2q ~ 3q ~ 5sq ~ q ~ )q ~ *t
dispatchEventsq ~ t java.awt.LightweightDispatcherq ~ 3t retargetMouseEventsq ~ q ~ :q ~ 3q ~ +sq ~ Lq ~ :q ~ 3q ~ 8sq ~ 6q ~ 2q ~ 3q ~ 5sq ~ }t java.awt.Windowt window.javaq ~ 5sq ~ q ~ )q ~ *q ~ 8sq ~ Wt java.awt.EventQueuet EventQueue.javaq ~ 8sq ~ t java.awt.EventDispatchThreadt EventDispatchThread.javat pumpOneEventForFilterssq ~ q ~ Gq ~ Ht pumpEventsForFiltersq ~ q ~ Gq ~ Ht pumpEventsForHierarchysq ~ q ~ Gq ~ Ht
pumpEventssq ~ q ~ Gq ~ Hq ~ Osq ~ yq ~ Gq ~ Ht runx"

This does not look right; it looks very similar to what I get in the General Output screen. I was expecting to see a saved inventory list. Other than that, I believe I met the requirements of this assignment. If something is not working with the save feature, what is needed to correct the problem? Thank you and everyone else!
Was This Post Helpful? 0
  • +
  • -

#5 Martyr2  Icon User is offline

  • Programming Theoretician
  • member icon

Reputation: 5074
  • View blog
  • Posts: 13,697
  • Joined: 18-April 07

Re: My Delete button is not working

Posted 18 November 2007 - 12:17 AM

Well in order for a class to be written to file in a meaningful and useful manner, it must be serializable. This is the process of converting an object into a serialized manager so that it can be written to a stream.

Imagine taking a whole mob of people and trying to put them through a single door. You can't mash them all through at the same time. You have to tell the people to get into a single file line and walk through the door. This could be thought of as "serializing" the mob.

In order to make an object serializable, you have to implement the java.io.Serializable interface. Now usually you have to then override certain functions of the interface, but this interface has no methods that need to be overridden. You just have to implement the interface.

Check out the following page for more information about serialization and this interface.

Serializable Interface

Once you make your inventory and products serializable, you can then write them to file.

Enjoy! :)
Was This Post Helpful? 0
  • +
  • -

#6 ITXavier25  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 07

Re: My Delete button is not working

Posted 18 November 2007 - 01:13 AM

View PostMartyr2, on 18 Nov, 2007 - 12:17 AM, said:

Well in order for a class to be written to file in a meaningful and useful manner, it must be serializable. This is the process of converting an object into a serialized manager so that it can be written to a stream.

Imagine taking a whole mob of people and trying to put them through a single door. You can't mash them all through at the same time. You have to tell the people to get into a single file line and walk through the door. This could be thought of as "serializing" the mob.

In order to make an object serializable, you have to implement the java.io.Serializable interface. Now usually you have to then override certain functions of the interface, but this interface has no methods that need to be overridden. You just have to implement the interface.

Check out the following page for more information about serialization and this interface.

Serializable Interface

Once you make your inventory and products serializable, you can then write them to file.

Enjoy! :)


Thanks a bunch! I've implemented the serialization to the Inventory and ProductModified class (I also implemented it in the Product class; however, I received the same output whether I implemented it or not. Therefore, took it out of the Product class).

Now, the inventory.dat file produced something different, which is:

" sr InventoryQ%wt D totalRestockL
inventoryNamet Ljava/lang/String;L productst Ljava/util/ArrayList;L restockRateq ~ xp psr java.util.ArrayListxa I sizexp w
sr ProductModified_ xr ProductX>i D inventoryValueD priceI
productNumberI unitL autobotNameq ~ xp t No Sale Botsq ~ @ @d  4t
Optimus Primesq ~ @Dٙ@[email protected]  =t
BumbleeBeesq ~ @![email protected]  jt Ironhidesq ~ @@` @S " }t Ratchetsq ~ @ @Q |t Jazzxp"

It still looks kind of funny...is it suppose to look that way? I think it is suppose to look that way because in the past, I experimented on opening files with the wrong programs and I get something to that effect. Maybe I need to open it with another program other than notepad so it can be viewed better (I don't know of a program to open .dat files), or maybe the only way to view it correctly is if I had a Load feature in my Inventory Program; however, that's not required for this assignment (I might implement that feature later on after I submit this just because....).

Please let me know (or anyone else) if everything is ok (and what program to use to view the .dat file correctly....if available). I thank you a bunch and thanks for the link! I'll continue to review it to get a better understanding of it (your explanation was more readable and understandable, the Sun's explanation requires some time for it to be absorbed, especially when my mind is racing in overdrive right now :ph34r: :blink: :crazy: :D . ).
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1