import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
class GUI extends JFrame
{
private int currentProdno = 0;
private int arraySize = 0;
private double totValue;
private JTextField jguiDvdItem; //Item nbr
private JTextField jguiDvdName; //dvd name
private JTextField jguDvdCount; //# dvd
private JTextField jguDvdPrice; // unit price
private JTextField jguiYear; //DVD year
private JTextField jguiDvdRestock; //Restocking fee
private JTextField jguiTotal;
private NewDVD[ ] inventory;
private JButton btnNext;
GUI( NewDVD[]inv )
{
arraySize = inv.length;
inventory = inv;
JPanel jp; //Change the name of these variables to something else
JLabel jl;
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));
JPanel titlePanel = new JPanel();
titlePanel.setLayout(new FlowLayout(FlowLayout.CENTER));
jl = new JLabel("GUI for DVD Inventory");
titlePanel.add(jl);
JPanel numberPanel = new JPanel();
numberPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel(" Item Number: " );//Label for the item number
numberPanel.add(jl);
jguiDvdItem = new JTextField (6); //Size of field
jguiDvdItem.setEditable(false); //Makes it "write protected"
numberPanel.add(jguiDvdItem);
outerPanel.add(numberPanel);
JPanel number1Panel = new JPanel();
number1Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel(" Name: " );//Name of item
number1Panel.add(jl);
jguiDvdName = new JTextField (16);
jguiDvdName.setEditable(false);
number1Panel.add(jguiDvdName);
outerPanel.add(number1Panel);
JPanel number2Panel = new JPanel();
number2Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel(" # in stock: " );// Number of each item
number2Panel.add(jl);
jguDvdCount = new JTextField(4);
jguDvdCount.setEditable(false);
number2Panel.add(jguDvdCount);
outerPanel.add(number2Panel);
JPanel number3Panel = new JPanel();
number3Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel(" Price: $ " );//price of each item
number3Panel.add(jl);
jguDvdPrice = new JTextField(4);
jguDvdPrice.setEditable(false);
number3Panel.add(jguDvdPrice);
outerPanel.add(number3Panel);
JPanel number4Panel = new JPanel();
number4Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel(" Year: $ " );//Year
number4Panel.add(jl);
jguiYear = new JTextField(5);
jguiYear.setEditable(false);
number4Panel.add(jguiYear);
outerPanel.add(number4Panel);
JPanel number5Panel = new JPanel();
number5Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
jl = new JLabel("Total Inventory Value: $" );//Total Inventory Value
number5Panel.add(jl);
jguiTotal = new JTextField(7);
jguiTotal.setEditable(false);
number5Panel.add(jguiTotal);
outerPanel.add(number5Panel);
//******************************************
//Button Area:
JPanel jpButtonN = new JPanel();
JButton jbNext = new JButton("Next");
jbNext.addActionListener(new NextButtonHandler());
jpButtonN.add(jbNext);
outerPanel.add(jpButtonN);
//*************************************************************************
//Call update Fields
updateNButton( inventory, currentProdno );
updateFields( inventory, currentProdno );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300, 75, 550, 650);
setContentPane(outerPanel);
setResizable(false);
setVisible(true);
}//end GUI
//*************************************************************************
public void updateNButton( NewDVD[ ] inventory, int index )
{
totValue += inventory[ index ].getdvdRestock();
}
//*************************************************************************
public void updateNextButton( NewDVD[ ] inventory )
{
int i = 0;
for(i = 0;i <= (inventory.length-1);i++)
{
totValue += inventory[ i ].value();
}
}
//*************************************************************************
//updateFields NEED 2 PARAMENTER THE OBJECT AND THE INDEX
//TO SPECIFY THE ARRAY ELEMENT
public void updateFields( NewDVD[ ] inventory, int index )
{
jguiDvdItem.setText( "" + inventory[ index ].getDvdItem() );//DVD Item umber
jguiDvdName.setText( "" + inventory[ index ].getDvdName() );//DVD name
jguDvdCount.setText( "" + inventory[ index ].getDvdCount() );//# DVDs
jguDvdPrice.setText( "" + inventory[ index ].getDvdPrice() );// DVDPrice
jguiDvdRestock.setText( "" + String.format("%.2f",inventory[ index ].getdvdRestock()) );//Restocking Fee
jguiYear.setText( "" + inventory[ index ].getYear() );//Year
jguiTotal.setText( "" + String.format("%.2f",totValue ));//Total Value
} // end updateFields()
//**********************************************************
//Next Button
class NextButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent event) {
if (currentProdno > inventory.length)
{
currentProdno = 0;
totValue = 0;
updateNButton( inventory, currentProdno );
}
else
{
++currentProdno;
updateNButton( inventory, currentProdno );
}
updateFields( inventory, currentProdno);
}
}//end Next Button
}//end GUI
ERROR MESSAGE: Exception in thread "main" java.lang.NullPointerException
at GUI.updateFields(InventoryGUI.java:157)
at GUI.<init>(InventoryGUI.java:111)
at InventoryPart1.main(InventoryPart1.java:37)
Java Result: 1

New Topic/Question
Reply




MultiQuote





|