I am having an issue where with my program and reading all the posts on your site has been VERY useful in understanding this project thank you! Now for my issue i am having trouble getting the buttons to recognize the class provided for them. For instance (i use Netbeans) an i am getting an error for the Last, add, modify and so on. the only button that does not have an error is the previous button, I can not find what i screwed up! here is what i have been working with
package javaapplication14;
import java.awt.*; // import the java awt package
import java.awt.event.*; // Import the java event package
import javax.swing.*; // Import the java swing package
public class VhsInventory {
// main method
public static void main(String[] args) {
System.out.println("My Crappy VHS collection\n");
Movie vhs = null;
Inventory inventory = new Inventory();
vhs = new Movie(1, "The Grinch", 2, 3f, "Comedy");
System.out.println(vhs);
inventory.addMovie(vhs);
vhs = new Movie(2, "Free Willy", 2, 1.50f, "Drama");
System.out.println(vhs);
inventory.addMovie(vhs);
vhs = new Movie(3, "Die Hard", 3, 5f, "Action");
System.out.println(vhs);
inventory.addMovie(vhs);
vhs = new Movie(4, "A Christmas Carol", 4, 4f, "Drama");
inventory.addMovie(vhs);
System.out.println(vhs);
vhs = new Movie(5, "The Mask", 3, 2.95f, "Comedy");
System.out.println(vhs);
inventory.addMovie(vhs);
inventory.printInventory();
new InventoryGUI(inventory);
} // end main
} // end
class VHS {
private int itemNo;
private String title;
private int inStock;
private double unitPrice;
VHS(int itemNo, String title, int inStock, double unitPrice) {
this.itemNo = itemNo;
this.title = title;
this.inStock = inStock;
this.unitPrice = unitPrice;
}
public int getItemNo() {
return itemNo;
}
public String getTitle() {
return title;
}
public int getInStock() {
return inStock;
}
public double getUnitPrice() {
return unitPrice;
}
public double value() {
return inStock * unitPrice;
}
@Override
public String toString() {
return String.format("itemNo=%2d title=%-22s inStock=%3d price=$%7.2f value=$%8.2f",
itemNo, title, inStock, unitPrice, value());
}
} // end
class Inventory {
// Setup of array to hold 30 movies
private final int INVENTORY_SIZE = 30;
private VHS[] items;
private int numItems;
Inventory() {
items = new Movie[INVENTORY_SIZE];
numItems = 0;
}
public int getNumItems() {
return numItems;
}
public VHS getVHS(int n) {
return items[n];
}
// Adds a Movie
public void addMovie(VHS item) {
items[numItems] = item;
++numItems;
}
// Loop through
public double value() {
double sumOfInventory = 0.0;
for (int i = 0; i < numItems; i++) {
sumOfInventory += items[i].value();
}
return sumOfInventory;
}
public void printInventory() {
System.out.println("\n My Crappy VHS Collection\n");
// If no items were found
if (numItems <= 0) {
System.out.println("No Movies avalible.\n");
} else {
for (int i = 0; i < numItems; i++) {
System.out.printf("%3d %s\n", i, items[i]);
}
System.out.printf("\n Inventory value is $%,.2f\n\n", value());
}
}
} // end
class Movie extends VHS {
// Holds movie Genre and restocking fee
public String genre;
// Constructor
public Movie(int MovieID, String itemName, int quantityOnHand, double itemPrice, String genre) {
super(MovieID, itemName, quantityOnHand, itemPrice);
this.genre = genre;
}
// To set the genre manually
public void setgenre(String genre) {
}
// Get the genre of this Movie
public String getMoviegenre() {
return genre;
}
@Override
public double value() {
return super.value() + restockingFee();
}
// 5% restocking fee
public double restockingFee() {
return super.value() * 0.05f;
}
} // end
// GUI for the Inventory
class Vhslogo extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // call paintComponent
// draws larger 3d rectangle
g.setColor(Color.red);
g.draw3DRect(45, 15, 180, 40, true);
// draws small black square
g.setColor(Color.BLACK);
g.draw3DRect(5, 15, 40, 40, true);
g.fill3DRect(5, 15, 40, 40, false);
// draws company name
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 25));
g.drawString("Crappy VHS Inventory", 10, 45);
} // end paintComponent
} // end class
class InventoryGUI extends JFrame {
private Inventory theInventory;
private int index = 1;
// GUI elements to display currently selected VHS information
private final JLabel itemNumberLabel = new JLabel("Number:");
private JTextField itemNumberText;
private final JLabel prodnameLabel = new JLabel("Title:");
private JTextField prodnameText;
private final JLabel prodpriceLabel = new JLabel("Price: $");
private JTextField prodpriceText;
private final JLabel numinstockLabel = new JLabel(" Avalibable:");
private JTextField numinstockText;
private final JLabel valueLabel = new JLabel(" Total Price:");
private JTextField valueText;
private final JLabel restockingFeeLabel = new JLabel(" Restocking Fee:");
private JTextField restockingFeeText;
private final JLabel totalValueLabel = new JLabel(" Total Value:");
private JTextField totalValueText;
private JPanel centerPanel;
private JPanel buttonPanel;
// constructor for the GUI
InventoryGUI(Inventory inventory) {
super ("My Crappy VHS Collection");
Vhslogo jpanel = new Vhslogo();
final Dimension dim = new Dimension(140, 60);
final FlowLayout flo = new FlowLayout(FlowLayout.LEFT);
JPanel jp;
theInventory = inventory;
// setup the GUI
// product information
// setup a panel to collect all the components.
centerPanel = new JPanel();
centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
buttonPanel = new JPanel();
JButton nextButton = new JButton("Next");
nextButton.addActionListener(new NextButtonHandler());
buttonPanel.add(nextButton);
centerPanel.add(buttonPanel);
JButton previousButton = new JButton("Back");
previousButton.addActionListener(new PreviousButtonHandler());
buttonPanel.add(previousButton);
JButton lastButton = new JButton("Last");
lastButton.addActionListener(new LastButtonHandler());
buttonPanel.add(lastButton);
JButton addButton = new JButton("Add");
addButton.addActionListener(new AddButtonHandler());
buttonPanel.add(addButton);
JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new DeleteButtonHandler());
buttonPanel.add(deleteButton);
JButton modifyButton = new JButton("Modify");
modifyButton.addActionListener(new ModifyButtonHandler());
buttonPanel.add(modifyButton);
JButton saveButton = new JButton("Save");
saveButton.addActionListener(new SaveButtonHandler());
buttonPanel.add(saveButton);
JButton findButton = new JButton("Find");
findButton.addActionListener(new findButtonHandler());
buttonPanel.add(findButton);
centerPanel.add(buttonPanel);
jp = new JPanel(flo);
itemNumberLabel.setPreferredSize(dim);
jp.add(itemNumberLabel);
itemNumberText = new JTextField(3);
itemNumberText.setEditable(false);
jp.add(itemNumberText);
centerPanel.add(jp);
jp = new JPanel(flo);
prodnameLabel.setPreferredSize(dim);
jp.add(prodnameLabel);
prodnameText = new JTextField(12);
prodnameText.setEditable(false);
jp.add(prodnameText);
centerPanel.add(jp);
jp = new JPanel(flo);
prodpriceLabel.setPreferredSize(dim);
jp.add(prodpriceLabel);
prodpriceText = new JTextField(12);
prodpriceText.setEditable(false);
jp.add(prodpriceText);
centerPanel.add(jp);
jp = new JPanel(flo);
numinstockLabel.setPreferredSize(dim);
jp.add(numinstockLabel);
numinstockText = new JTextField(5);
numinstockText.setEditable(false);
jp.add(numinstockText);
centerPanel.add(jp);
jp = new JPanel(flo);
restockingFeeLabel.setPreferredSize(dim);
jp.add(restockingFeeLabel);
restockingFeeText = new JTextField(5);
restockingFeeText.setEditable(false);
jp.add(restockingFeeText);
centerPanel.add(jp);
jp = new JPanel(flo);
valueLabel.setPreferredSize(dim);
jp.add(valueLabel);
valueText = new JTextField(17);
valueText.setEditable(false);
jp.add(valueText);
centerPanel.add(jp);
jp = new JPanel(flo);
totalValueLabel.setPreferredSize(dim);
jp.add(totalValueLabel);
totalValueText = new JTextField(17);
totalValueText.setEditable(false);
jp.add(totalValueText);
centerPanel.add(jp);
// add the panel to the GUI display
setContentPane(centerPanel);
repaintGUI();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(560, 530);
setResizable(false);
setLocationRelativeTo(null);
setVisible(true);
}
public void repaintGUI() {
Movie temp = (Movie) theInventory.getVHS(index);
if (temp != null) {
itemNumberText.setText("" + temp.getItemNo());
prodnameText.setText(temp.getTitle());
prodpriceText.setText(String.format("$%.2f", temp.getUnitPrice()));
restockingFeeText.setText(String.format("$%.2f", temp.restockingFee()));
numinstockText.setText("" + temp.getInStock());
valueText.setText(String.format("$%.2f", temp.value()));
}
totalValueText.setText(String.format("$%.2f", theInventory.value()));
}
class FirstButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
index = 1;
repaintGUI();
}
}
class PreviousButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
int numItems = theInventory.getNumItems();
if (numItems != 0) {
index = (--index) % numItems;
}
if (index < 0) {
index = numItems - 1;
}
if (numItems == 0) // catches for last entry not needed because we add a blank entry at zero but just in case
{
JOptionPane.showMessageDialog(null, "That's the last entry.", "Please try again", JOptionPane.ERROR_MESSAGE);
}
repaintGUI();
}
class NextButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
int numItems = theInventory.getNumItems();
index = (++index) % numItems;
repaintGUI();
}
}
class LastButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
int numItems = theInventory.getNumItems();
index = (numItems - 1) % numItems;
repaintGUI();
}
}
class AddButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaintGUI();
}
}
class SaveButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaintGUI();
}
}
class ModifyButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaintGUI();
}
}
class DeleteButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaintGUI();
}
}
class findButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
repaintGUI();
}
}
}
}