Delete Button is not working properly it will not delete entry

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • JeanxPlay
    New Member
    • Nov 2014
    • 1

    Delete Button is not working properly it will not delete entry

    I'm trying to get my delete button in my GUI to work but its not wanting to work the way it needs to. its suppose to remove my current selected ArrayList item from the list but all it does is move to the next item.

    What am I doing wrong?

    My product class:
    Code:
    import java.util.ArrayList;
    
    public class product {
    	
    @SuppressWarnings("all")
        ArrayList <extendedDVD> product() {
            
    	ArrayList<extendedDVD> dvd = new ArrayList<extendedDVD>(); //New Array Constructor
            
             dvd.add(new extendedDVD("The Change Up", 12, 11.86, 10452));  //Index
            
             dvd.add(new extendedDVD("Wall-E", 15, 9.05, 10356));     //Index
            
             dvd.add(new extendedDVD("Flubber", 13, 7.01, 13698));		//Index
            
             dvd.add(new extendedDVD("Daddy Day Care", 14, 9.15, 15496));	//Index
             
             return dvd;
        }
    
        public static void main(String [] args) //Main Method
        {
    
            GUI mainbox = new GUI();
            mainbox.setVisible(true);
    
        }//end main method
    }// end class Product
    My DVD class:
    Code:
    class DVD {
    
        String dvdTitle; //Variable
        int dvdStock;    //Variable
        double dvdPrice; //Variable
        int dvdItem;     //Variable
    
        public DVD(String title, int stock, double price, int item) //Method Constructor
        {
    
            dvdTitle = title;
            dvdStock = stock;
            dvdPrice = price;
            dvdItem = item;
        } //end four-argument constructor
    
        public DVD() //Method
        {
    
            dvdTitle = ""; //Value Type
            dvdStock = 0;  //Value Type
            dvdPrice = 0.0; //Value Type
            dvdItem = 0;  //Value Type
        } //end four-argument constructor
    
        // set DVD name
        public void setDvdTitle(String title) //Method
        {
            dvdTitle = title;
        } //end method  setDvdTitle
    
        //return DVD Title
        public String getDvdTitle() //Method
        {
            return dvdTitle;
        } //end method getDvdTitle
    
        //set DVD Stock
        public void setDvdStock(int stock) //Method
        {
            dvdStock = stock;
        } //end method setDvdStock
    
        //return DvdStock
        public int getDvdStock() //Method
        {
            return dvdStock;
        } //end method getDvdStock
    
        public void setDvdPrice(double price) //Method
        {
            dvdPrice = price;
        } //end method setDvdPrice
    
        //return dvdPrice
        public double getDvdPrice() //Method
        {
            return dvdPrice;
        } //end method getDvdPrice
    
        public void setDvdItem(int item) //Method
        {
            dvdItem = item;
        } //end method setdvdItem
    
        //return DVD item
        public int getDvdItem() //Method
        {
            return dvdItem;
        } //end  method getDvdItem
    
        //calculate inventory value
        //    v v v v v v v 
        public double value() //Method
        {
            return dvdPrice * dvdStock;
        } //end method value
    
        /*    public double valueTotal(extendedDVD[] item) //Method
        {
        double iTotal = 0.0;
        for (int i = 0; i < item.length; i++) // "for" Argument
        {
        iTotal = iTotal + item[i].value();
        }
        return iTotal;
        } //end method value*/
    
        public int compareTo(DVD d) //Method
        {
            int lastCmp = dvdTitle.compareTo(d.dvdTitle);
            return (lastCmp != 0 ? lastCmp : dvdTitle.compareTo(d.dvdTitle));
        }// end method value
    
    } //end class DVD
    My extendedDVD class:
    Code:
    class extendedDVD extends DVD {
        public extendedDVD(String title, int stock, double price, int item) //Method
        {
            super(title, stock, price, item);
        } // end method value
    
        public double restockFee() //Method
        {
            return getDvdPrice() * .05;
        }//end method value
    
        public double totalRestock() //Method
        {
            return restockFee() + getDvdPrice();
        } // end method value
    
    }// end class extendedDVD
    My main application/GUI code:
    Code:
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Scanner;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextPane;
    import javax.swing.SwingConstants;
    
    
    @SuppressWarnings("serial")
    public class GUI extends JFrame {
    	
    	
    	int Index = 0;
        private final JTextPane textTitle;
        private final JTextPane textItem;
        private final JTextPane textStock;
        private final JTextPane textPrice;
        private final JTextPane textFee;
        private final JTextPane textTpro;
        
        product mainBox = new product();
        
        
        
        public GUI() {
        	setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\CenterLogo.png"));
        	getContentPane().setBackground(Color.DARK_GRAY);
            setTitle("UniMedia:        DVD Inventory");
            setSize(900, 450);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);
            getContentPane().setLayout(null);
            
            JButton btnFirst = new JButton("");
            btnFirst.setToolTipText("Go to First DVD");
            btnFirst.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\FirstArrow.png"));
            btnFirst.setContentAreaFilled(false);
            btnFirst.setFocusPainted(false);
            btnFirst.setBorderPainted(false);
            btnFirst.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent click) {
                    Index = 0;
                    setValues();//refreshes values to new index
                }
            });
            btnFirst.setBounds(10, 360, 38, 40);
            getContentPane().add(btnFirst);
            
            JButton btnPrevious = new JButton("");
            btnPrevious.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\PreviousArrow.png"));
            btnPrevious.setContentAreaFilled(false);
            btnPrevious.setFocusPainted(false);
            btnPrevious.setBorderPainted(false);
            btnPrevious.setToolTipText("Go to Previous DVD");
            btnPrevious.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent click) {
                    if(Index == 0) {
                        Index = mainBox.product().size() - 1;
                        setValues();//refreshes values to new index
                    } else {
                        Index--;//index - 1
                        setValues();//refreshes values to new index
                    }
                }
            });
            btnPrevious.setBounds(135, 359, 38, 40);
            getContentPane().add(btnPrevious);
            
            JButton btnNext = new JButton("");
            btnNext.setToolTipText("Go to Next DVD");
            btnNext.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\Next Arrow.png"));
            btnNext.setContentAreaFilled(false);
            btnNext.setFocusPainted(false);
            btnNext.setBorderPainted(false);
            btnNext.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent click) {
                    if(Index == mainBox.product().size() - 1) {
                        Index = 0;
                        setValues();//refreshes values to new index
                    } else {
                        Index++;//index + 1
                        setValues();//refreshes values to new index
                    }
                }
            });
            btnNext.setBounds(209, 359, 38, 40);
            getContentPane().add(btnNext);
            
            JButton btnLast = new JButton("");
            btnLast.setToolTipText("Go to Last DVD");
            btnLast.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\LastArrow.png"));
            btnLast.setContentAreaFilled(false);
            btnLast.setFocusPainted(false);
            btnLast.setBorderPainted(false);
            btnLast.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent click) {
                    Index = mainBox.product().size() - 1;
                    setValues();//refreshes values to new index
                }
            });
            btnLast.setBounds(353, 360, 34, 35);
            getContentPane().add(btnLast);
            
            JLabel lblNewLabel = new JLabel("Title:");
            lblNewLabel.setForeground(new Color(0, 206, 209));
            lblNewLabel.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel.setBounds(602, 23, 46, 14);
            getContentPane().add(lblNewLabel);
            
            JLabel lblNewLabel_1 = new JLabel("Item #:");
            lblNewLabel_1.setForeground(new Color(0, 206, 209));
            lblNewLabel_1.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel_1.setBounds(602, 58, 46, 14);
            getContentPane().add(lblNewLabel_1);
            
            JLabel lblNewLabel_2 = new JLabel("Stock:");
            lblNewLabel_2.setForeground(new Color(0, 206, 209));
            lblNewLabel_2.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel_2.setBounds(602, 93, 46, 14);
            getContentPane().add(lblNewLabel_2);
            
            JLabel lblNewLabel_3 = new JLabel("Price:");
            lblNewLabel_3.setForeground(new Color(0, 206, 209));
            lblNewLabel_3.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel_3.setBounds(602, 127, 46, 14);
            getContentPane().add(lblNewLabel_3);
            
            textTitle = new JTextPane();
            textTitle.setFont(new Font("Eras Light ITC", Font.ITALIC, 15));
            textTitle.setForeground(Color.WHITE);
            textTitle.setBackground(Color.DARK_GRAY);
            textTitle.setEditable(false);
            textTitle.setBounds(746, 15, 124, 20);
            getContentPane().add(textTitle);
           
            
            textItem = new JTextPane();
            textItem.setForeground(Color.WHITE);
            textItem.setFont(new Font("Segoe UI Light", Font.PLAIN, 15));
            textItem.setBackground(Color.DARK_GRAY);
            textItem.setEditable(false);
            textItem.setBounds(746, 52, 124, 20);
            getContentPane().add(textItem);
            
            
            textStock = new JTextPane();
            textStock.setForeground(Color.WHITE);
            textStock.setFont(new Font("Segoe UI Light", Font.PLAIN, 15));
            textStock.setBackground(Color.DARK_GRAY);
            textStock.setEditable(false);
            textStock.setBounds(746, 87, 124, 20);
            getContentPane().add(textStock);
            
            
            textPrice = new JTextPane();
            textPrice.setForeground(Color.WHITE);
            textPrice.setFont(new Font("Segoe UI Light", Font.PLAIN, 15));
            textPrice.setBackground(Color.DARK_GRAY);
            textPrice.setEditable(false);
            textPrice.setBounds(746, 121, 124, 20);
            getContentPane().add(textPrice);
            
            
            JLabel lblNewLabel_4 = new JLabel("Restock Fee : 5%");
            lblNewLabel_4.setForeground(new Color(0, 206, 209));
            lblNewLabel_4.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel_4.setBounds(602, 183, 110, 14);
            getContentPane().add(lblNewLabel_4);
            
            JLabel lblNewLabel_5 = new JLabel("Total:");
            lblNewLabel_5.setForeground(new Color(0, 206, 209));
            lblNewLabel_5.setFont(new Font("Segoe UI", Font.ITALIC, 13));
            lblNewLabel_5.setBounds(602, 232, 46, 14);
            getContentPane().add(lblNewLabel_5);
            
            textFee = new JTextPane();
            textFee.setForeground(Color.WHITE);
            textFee.setFont(new Font("Segoe UI Light", Font.PLAIN, 15));
            textFee.setBackground(Color.DARK_GRAY);
            textFee.setEditable(false);
            textFee.setBounds(761, 183, 109, 20);
            getContentPane().add(textFee);
            
            
            textTpro = new JTextPane();
            textTpro.setForeground(Color.WHITE);
            textTpro.setFont(new Font("Segoe UI Light", Font.PLAIN, 15));
            textTpro.setBackground(Color.DARK_GRAY);
            textTpro.setEditable(false);
            textTpro.setBounds(761, 232, 109, 20);
            getContentPane().add(textTpro);
            
            
            JLabel lblTotalInventoryValue = new JLabel("Total Inventory Value ->");
            lblTotalInventoryValue.setForeground(Color.LIGHT_GRAY);
            lblTotalInventoryValue.setFont(new Font("Segoe UI", Font.ITALIC, 11));
            lblTotalInventoryValue.setBounds(685, 382, 139, 29);
            getContentPane().add(lblTotalInventoryValue);
            
            
            setValues();
            /* Set outside of the other method to avoid infinite adding cycle with next/previous/last/first buttons */
            //textTinv.setText(String.format("$%.2f", valueTotal()));
            
            JButton btnTotalInv = new JButton("");
            btnTotalInv.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\TotalInventory.png"));
            btnTotalInv.setContentAreaFilled(false);
            btnTotalInv.setFocusPainted(false);
            btnTotalInv.setBorderPainted(false);
            btnTotalInv.addActionListener(new ActionListener() {
            	public void actionPerformed(ActionEvent arg0) {
            		JOptionPane.showMessageDialog(null, "The Inventory Total Is:     " + String.format("$%.2f",valueTotal()),null, JOptionPane.INFORMATION_MESSAGE);
            		
            	}
            });
            btnTotalInv.setBounds(824, 371, 46, 40);
            getContentPane().add(btnTotalInv);
            
            
            
            JLabel lblNewLabel_6 = new JLabel("");
            lblNewLabel_6.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\CenterLogo.png"));
            lblNewLabel_6.setBounds(108, 58, 100, 100);
            setVisible(true);
            getContentPane().add(lblNewLabel_6);
            
            JLabel lblNewLabel_7 = new JLabel("");
            lblNewLabel_7.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\UniMedia.gif"));
            lblNewLabel_7.setBounds(59, 0, 200, 214);
            getContentPane().add(lblNewLabel_7);
            
            JLabel lblUnimedia = new JLabel("UniMedia");
            lblUnimedia.setFont(new Font("Eras Demi ITC", Font.ITALIC, 39));
            lblUnimedia.setBounds(69, 202, 253, 58);
            getContentPane().add(lblUnimedia);
            
            JButton btnSave = new JButton("");
            btnSave.setContentAreaFilled(false);
            btnSave.setFocusPainted(false);
            btnSave.setBorderPainted(false);
            btnSave.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\SaveData.png"));
            btnSave.setBounds(845, 280, 25, 31);
            btnSave.addActionListener(new ActionListener() {
            	public void actionPerformed(ActionEvent arg0) {
            	try{	
            		cFile x = new cFile();
            		x.openFile();
            		x.addRecords();
            		//x.closeFile();
            	}catch(Exception e){
            		JOptionPane.showMessageDialog(null, "COULD NOT CREATE FILE OR DIRECTORY!",null,JOptionPane.ERROR_MESSAGE);
            		}
            	}
            });
            getContentPane().add(btnSave);
            
            JButton btnEdit = new JButton("");
            btnEdit.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\EditData.png"));
            btnEdit.setContentAreaFilled(false);
            btnEdit.setFocusPainted(false);
            btnEdit.setBorderPainted(false);
            btnEdit.setBounds(735, 280, 25, 31);
            getContentPane().add(btnEdit);
            
            JButton btnDelete = new JButton("");
            btnDelete.setIcon(new ImageIcon("C:\\Users\\Margaret\\workspace\\FinalGUI\\ResImgs\\Delete.png"));
            btnDelete.setContentAreaFilled(false);
            btnDelete.setFocusPainted(false);
            btnDelete.setBorderPainted(false);
            btnDelete.setBounds(697, 283, 25, 23);
            btnDelete.addActionListener(new ActionListener() {
           	 public void actionPerformed(ActionEvent e) {
           		 JOptionPane.showMessageDialog(null,"Entry Deleted!");
           	  	while (Index == 0) {
          	       	 try{
          	       	 if (Index >= 0){
          	        		//Index = mainBox.product().remove(Index);
          	        		Index = Index -1;
          	        		Index = mainBox.product().size() - 1;
          	        		setValues();
          	        }else 
          	        			JOptionPane.showMessageDialog(null,"ENTRY COULD NOT BE DELETED!");
          	        }catch (Exception ex){
          	       	JOptionPane.showMessageDialog(null,"Error Compiling! Fix your Code!");
          	        }
          	       }
           	 }
            });
           		 
            getContentPane().add(btnDelete);
           		 
           		 
           		 
           		 
        
            
            JLabel lblSearch = new JLabel("Search:");
            lblSearch.setFont(new Font("Segoe UI Light", Font.ITALIC, 11));
            lblSearch.setForeground(new Color(32, 178, 170));
            lblSearch.setHorizontalAlignment(SwingConstants.CENTER);
            lblSearch.setBounds(376, 23, 46, 14);
            getContentPane().add(lblSearch);
            
            JButton btnSearch = new JButton("Search");
            btnSearch.addActionListener(new ActionListener() {
            	Scanner a = new Scanner(System.in);
            	public void actionPerformed(ActionEvent e) {
            		JOptionPane.showInputDialog(null,"Enter DVD Title");
            		a.nextLine();
            		
            	}
            });
            btnSearch.setBounds(433, 20, 89, 23);
            getContentPane().add(btnSearch);
           
    
         }
    
       
        
        public void setValues() {
            
        	extendedDVD col = mainBox.product().get(Index);
            
            textTitle.setText(String.valueOf(col.getDvdTitle()));
            textItem.setText(String.valueOf(col.getDvdItem()));
            textPrice.setText(String.format("$%.2f", col.getDvdPrice()));
            textStock.setText(String.valueOf(col.getDvdStock()));
            
            textFee.setText(String.format("$%.2f", col.restockFee()));
            textTpro.setText(String.format("$%.2f", col.value()));
        }
        
        private double valueTotal() {
            double tVal = 0;
            for (extendedDVD col : mainBox.product()) {
                tVal += col.value();
            }
            return tVal;
        }
    }
    Last edited by Frinavale; Nov 10 '14, 03:48 PM. Reason: Added code tags
  • Frinavale
    Recognized Expert Expert
    • Oct 2006
    • 9749

    #2
    In the following code:
    Code:
    btnDelete.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null,"Entry Deleted!");
        while (Index == 0) {
          try{
            if (Index >= 0){
              //Index = mainBox.product().remove(Index);
              Index = Index -1;
              Index = mainBox.product().size() - 1;
              setValues();
            }else{
              JOptionPane.showMessageDialog(null,"ENTRY COULD NOT BE DELETED!");
            }
          }catch (Exception ex){
            JOptionPane.showMessageDialog(null,"Error Compiling! Fix your Code!");
          }
        }
      }
    });
    Shouldn't you simply be checking that the index is within the boundaries of the product list, removing the item at the index and then setting the index to something appropriate (like the previous item in the list)?

    I'm not sure why you have a while loop...and it looks like you commented out the line of code that actually does the work to remove the item from the list:

    Code:
    btnDelete.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null,"Entry Deleted!");
        try{
          if (Index >= 0 && Index < mainBox.product().size()){
            Index = mainBox.product().remove(Index);
            // The following commented out code
            // will move the index back 2 items because
            // once you remove the item at the index, another item will then move to that index position'
            // so, if you just leave the index alone  you should be fine... 
            // unless the deleted item is the Only item in your list...then you need to do something
            // Index = Index - 1;
           
            setValues();
           // please note that your set values will crash if 
           // the item index is set to a negative number...
           // because your setValues method doesn't take negative 
           // indexes into consideration.
           // Likewise, your setValues method does take into consideration the case when the index is set to something greater than the size of the list
          }else{
            JOptionPane.showMessageDialog(null,"ENTRY COULD NOT BE DELETED!");
          }
        }catch (Exception ex){
          // actually this isn't a compile error it is a runtime error when something unexpected occurs... figure out why this is required and make necessary changes
          // for example, this code will compile but you will see this message when you delete the only item left in your list because your index will end up being outside of the boundaries of the array (position 0 larger than the array size)
          JOptionPane.showMessageDialog(null,"Error Compiling! Fix your Code!");
        }
      });
    Last edited by Frinavale; Nov 10 '14, 04:23 PM.

    Comment

    Working...