By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,199 Members | 1,551 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,199 IT Pros & Developers. It's quick & easy.

How to Populate GUI Fields from JList

P: 38
I am a beginner here, still in my first Java class, so I hope this question is not so simple as to offend anyone, but I am finishing up my cd inventory program.
Adding some GUI buttons to manipulate data in my JList.
JList is beyond the scope of my class so I am finding help hard to come by.
I only have two weeks of class left, so it is too late to go back to my array now.
It is sink or swim with what I have. :o)

For my question ... I have an ADD button that works like a charm, populates JList from my fields. I am now working on the PREV button to pull the information back to the fields from the previous cd. I have coded and coded but I am obviously doing something wrong because it keeps erroring upon execution.
Compiles fine, but will not run. Keep getting:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Num berFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at Inventory2.btnAddActionPerformed(Inventory2.java:2 55)
at Inventory2.access$000(Inventory2.java:10)
at Inventory2$2.actionPerformed(Inventory2.java:155)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.jav a:5517)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3135)
at java.awt.Component.processEvent(Component.java:528 2)
at java.awt.Container.processEvent(Container.java:196 6)
at java.awt.Component.dispatchEventImpl(Component.jav a:3984)
at java.awt.Container.dispatchEventImpl(Container.jav a:2024)
at java.awt.Component.dispatchEvent(Component.java:38 19)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3822)
at java.awt.Container.dispatchEventImpl(Container.jav a:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791 )
at java.awt.Component.dispatchEvent(Component.java:38 19)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 463)
at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:110)


Here is my code. Everything works except the Previous Button action event.
Any suggestions?

Expand|Select|Wrap|Line Numbers
  1. import java.util.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import javax.swing.event.*;
  6. import java.text.*;
  7. import java.lang.*;
  8.  
  9. public class Inventory2 extends JFrame
  10. {
  11.     private JLabel cdNameLabel; // name label 
  12.     private JLabel artistLabel; // item number label 
  13.     private JLabel nstockLabel; // units in stock label 
  14.     private JLabel priceLabel; // price each label 
  15.     private JLabel itemLabel; // item number label 
  16.     private JTextField cdNameField; // name display 
  17.     private JTextField artistField; // artist display 
  18.     private JFormattedTextField nstockField; // units in stock display 
  19.     private JFormattedTextField priceField; // price each display 
  20.     private JTextField itemField; // item number display 
  21.     private NumberFormat nstockFormat; // format field and parse numbers 
  22.     private NumberFormat priceFormat; // format field and parse numbers 
  23.     private JButton btnAdd; // first button 
  24.     private JButton btnPrev; // previous button 
  25.     private JButton btnNext; // next button 
  26.     private JButton btnDel; // last button 
  27.     private JButton btnFirst; // first button
  28.     private JButton btnLast; // last button
  29.     private JButton btnModify; // modify button
  30.     private JButton btnSave; // save button
  31.     private JButton btnSearch; // search button
  32.     private JPanel buttonJPanel; // JPanle to hold buttons 
  33.     private JPanel fieldJPanel; // JPanel to hold labels and displays 
  34.     private JPanel fontJPanel; // JPanel to display logo 
  35.     private int currCD; 
  36.     private double total = 0; // variable for total inventory 
  37.     private JList Inventorylist; // JList to take place of old array
  38.     private DefaultListModel listModel;
  39.     private JScrollPane jScrollPanel;  
  40.     private float Invtotal = .00f;
  41.  
  42.     public Inventory2() // create class and method to perform GUI build 
  43.     { 
  44.         initComponents(); 
  45.     } 
  46.  
  47.     private void initComponents() 
  48.     { 
  49.         // create label names 
  50.         cdNameLabel = new JLabel("CD Name:"); 
  51.         artistLabel = new JLabel("Artist:");
  52.         nstockLabel = new JLabel("In Stock:"); 
  53.         priceLabel = new JLabel("Each Item Cost:$"); 
  54.         itemLabel = new JLabel("Item Number:"); 
  55.  
  56.  
  57.         // initial fields
  58.         cdNameField = new JTextField(25);
  59.         cdNameField.setEditable(true);
  60.         artistField = new JTextField(15);
  61.         artistField.setEditable(true);
  62.         nstockField = new JFormattedTextField(nstockFormat);
  63.         nstockField.setEditable(true);
  64.         nstockField.setColumns(5);
  65.         priceField = new JFormattedTextField(priceFormat);
  66.         priceField.setEditable(true);
  67.         priceField.setColumns(5);
  68.         itemField = new JTextField(4);
  69.         itemField.setEditable(true);
  70.  
  71.         // JList
  72.         jScrollPanel = new JScrollPane();
  73.         Inventorylist = new JList(); 
  74.         currCD = 0;
  75.  
  76.  
  77.         // buttons 
  78.         btnAdd = new JButton(); 
  79.         btnNext = new JButton(); 
  80.         btnPrev = new JButton(); 
  81.         btnDel = new JButton();
  82.         btnLast = new JButton();
  83.         btnFirst = new JButton();
  84.         btnModify = new JButton(); 
  85.         btnSave = new JButton();
  86.         btnSearch = new JButton();
  87.  
  88.         getContentPane().setLayout(new FlowLayout());
  89.  
  90.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  91.  
  92.  
  93.         // place textFields and labels
  94.  
  95.         //artist
  96.         artistLabel.setText("Artist"); 
  97.         getContentPane().add(artistLabel); 
  98.  
  99.         artistField.setMinimumSize(new Dimension(70,20)); 
  100.         artistField.setPreferredSize(new Dimension(70,20));
  101.         getContentPane().add(artistField); 
  102.  
  103.         // cd name
  104.         cdNameLabel.setText("CD Name"); 
  105.         getContentPane().add(cdNameLabel); 
  106.  
  107.         cdNameField.setMinimumSize(new Dimension(70,20)); 
  108.         cdNameField.setPreferredSize(new Dimension(70,20));
  109.         getContentPane().add(cdNameField);
  110.  
  111.         // copies in stock
  112.         nstockLabel.setText("Copies In Stock"); 
  113.         getContentPane().add(nstockLabel); 
  114.  
  115.         nstockField.setMinimumSize(new Dimension(5,20)); 
  116.         nstockField.setPreferredSize(new Dimension(5,20));
  117.         getContentPane().add(nstockField); 
  118.  
  119.         //price of cd
  120.         priceLabel.setText("Price"); 
  121.         getContentPane().add(priceLabel); 
  122.  
  123.         priceField.setMinimumSize(new Dimension(20,20)); 
  124.         priceField.setPreferredSize(new Dimension(20,20));
  125.         getContentPane().add(priceField); 
  126.  
  127.         //item number of cd
  128.         itemLabel.setText("Item Number"); 
  129.         getContentPane().add(itemLabel); 
  130.  
  131.         itemField.setMinimumSize(new Dimension(5,20)); 
  132.         itemField.setPreferredSize(new Dimension(5,20));
  133.         getContentPane().add(itemField); 
  134.  
  135.  
  136.         // add listeners
  137.  
  138.         btnAdd.setText("Add");
  139.         btnAdd.addActionListener(new ActionListener()
  140.         {
  141.             public void actionPerformed(ActionEvent evt)
  142.             {
  143.                 btnAddActionPerformed(evt);
  144.             }
  145.         });
  146.         getContentPane().add(btnAdd);
  147.  
  148.         // PREVIOUS
  149.         btnPrev.setText("Previous");
  150.         btnPrev.addActionListener(new ActionListener()
  151.         {
  152.             public void actionPerformed(ActionEvent evt)
  153.             {
  154.                 btnAddActionPerformed(evt);
  155.             }
  156.         });
  157.         getContentPane().add(btnPrev);
  158.  
  159.         // NEXT
  160.         btnNext.setText("Next");        btnNext.addActionListener(new ActionListener()
  161.         {
  162.             public void actionPerformed(ActionEvent evt)
  163.             {
  164.                 btnAddActionPerformed(evt);
  165.             }
  166.         });
  167.         getContentPane().add(btnNext);
  168.  
  169.         // SEARCH
  170.         btnSearch.setText("Search");
  171.         btnSearch.addActionListener(new ActionListener()
  172.         {
  173.             public void actionPerformed(ActionEvent evt)
  174.             {
  175.                 btnAddActionPerformed(evt);
  176.             }
  177.         });
  178.         getContentPane().add(btnSearch);
  179.  
  180.         // FIRST
  181.         btnFirst.setText("First");
  182.         btnFirst.addActionListener(new ActionListener()
  183.         {
  184.             public void actionPerformed(ActionEvent evt)
  185.             {
  186.                 btnAddActionPerformed(evt);
  187.             }
  188.         });
  189.         getContentPane().add(btnFirst);
  190.  
  191.         // LAST
  192.         btnLast.setText("Last");
  193.         btnLast.addActionListener(new ActionListener()
  194.         {
  195.             public void actionPerformed(ActionEvent evt)
  196.             {
  197.                 btnAddActionPerformed(evt);
  198.             }
  199.         });
  200.         getContentPane().add(btnLast);
  201.  
  202.         // MODIFY
  203.         btnModify.setText("Modify");
  204.         btnModify.addActionListener(new ActionListener()
  205.         {
  206.             public void actionPerformed(ActionEvent evt)
  207.             {
  208.                 btnAddActionPerformed(evt);
  209.             }
  210.         });
  211.         getContentPane().add(btnModify);
  212.  
  213.         // SAVE
  214.         btnSave.setText("Save");
  215.         btnSave.addActionListener(new ActionListener()
  216.         {
  217.             public void actionPerformed(ActionEvent evt)
  218.             {
  219.                 btnAddActionPerformed(evt);
  220.             }
  221.         });
  222.         getContentPane().add(btnSave);
  223.  
  224.         // DELETE
  225.         btnDel.setText("Delete");
  226.         btnDel.addActionListener(new ActionListener()
  227.         {
  228.             public void actionPerformed(ActionEvent evt)
  229.             {
  230.                 btnAddActionPerformed(evt);
  231.             }
  232.         });
  233.         getContentPane().add(btnDel);
  234.  
  235.  
  236.         // new Jlist model
  237.         listModel = new DefaultListModel();
  238.         Inventorylist.setModel(listModel);
  239.  
  240.         jScrollPanel.setViewportView(Inventorylist);
  241.  
  242.         getContentPane().add(jScrollPanel);
  243.  
  244.         pack();
  245.     }// close
  246.  
  247.  
  248.         private void btnAddActionPerformed(ActionEvent evt)
  249.         {
  250.             // Create cd to add
  251.             CdwArtist newCD = new CdwArtist();
  252.             newCD.setArtist(artistField.getText());
  253.             newCD.setName(cdNameField.getText());    
  254.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  255.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  256.             newCD.setPrice(Float.parseFloat(priceField.getText()));
  257.  
  258.             // Add cd to list
  259.             listModel.addElement(newCD);
  260.             currCD = listModel.size()-1;  // sets currCD to added index
  261.  
  262.  
  263.             // Clear the text fields after add
  264.             artistField.setText(null);
  265.             cdNameField.setText(null);    
  266.             itemField.setText(null);
  267.             nstockField.setText(null);
  268.          priceField.setText(null);
  269.  
  270.             }// end ADD
  271.  
  272.         private void btnPrevActionPerformed(ActionEvent evt)
  273.         {
  274.             // Grab Previous cd 
  275.             CdwArtist newCD = (CdwArtist) listModel.get( currCD-- );
  276.             newCD.setArtist(artistField.getText());
  277.             newCD.setName(cdNameField.getText());    
  278.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  279.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  280.             newCD.setPrice(Float.parseFloat(priceField.getText()));        
  281.  
  282.             }// end PREV
  283.  
  284.         // run it
  285.         public static void main(String args[])
  286.         {
  287.         java.awt.EventQueue.invokeLater(new Runnable()
  288.             {
  289.             public void run()
  290.                 {
  291.                 new Inventory2().setVisible(true);
  292.                }
  293.             });
  294.         }
  295.  
  296. } // close class
Jul 29 '07 #1
Share this Question
Share on Google+
13 Replies


Expert 10K+
P: 11,448
According to that stacktrace the problem occurs in one of these lines:

Expand|Select|Wrap|Line Numbers
  1. newCD.setItemno(Integer.parseInt(itemField.getText()));
  2. newCD.setNstock(Integer.parseInt(nstockField.getText()));
  3.  
This indicates that either the itemField or the nstockFied don't contain a valid
integer number. As far as I can see those fields are JTextFields so you should
either supply valid text for those fileds or re-implement this part of your software.

kind regards,

Jos
Jul 29 '07 #2

blazedaces
100+
P: 284
java.lang.NumberFormatException.forInputString(Num berFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at Inventory2.btnAddActionPerformed(Inventory2.java:2 55)
Ok, so let's look at the printed error, the problem. If we know what the problem is and where it is we will better know how to solve it.

Now, why does java throw a NumberFormatException? Let's look at the documentation (if I were you, I would make this a habit):
Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.
Now we know what the problem is, next we'll try and understand where it is. The first place the error is caught inside of your class (as opposed to class Integer) is here: at Inventory2.btnAddActionPerformed(Inventory2.java:2 55). So here is that class:

Expand|Select|Wrap|Line Numbers
  1.         private void btnAddActionPerformed(ActionEvent evt)
  2.         {
  3.             // Create cd to add
  4.             CdwArtist newCD = new CdwArtist();
  5.             newCD.setArtist(artistField.getText());
  6.             newCD.setName(cdNameField.getText());    
  7.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  8.             newCD.setNstock(Integer.parseInt(nstockField.getText())); //This is where it says the error shows up.
  9.             newCD.setPrice(Float.parseFloat(priceField.getText()));
  10.  
  11.             // Add cd to list
  12.             listModel.addElement(newCD);
  13.             currCD = listModel.size()-1;  // sets currCD to added index
  14.  
  15.  
  16.             // Clear the text fields after add
  17.             artistField.setText(null);
  18.             cdNameField.setText(null);    
  19.             itemField.setText(null);
  20.             nstockField.setText(null);
  21.          priceField.setText(null);
  22.  
  23.             }// end ADD
  24.  
Quickly, let's take a look at the documentation to know why does Integer.parseInt(String s) throw that error and it says is throws it because:
"NumberFormatException - if the string does not contain a parsable integer."

I don't know exactly the problem yet, but I'm pretty sure by doing the following you can get to the bottom of it: add System.out.print for the strings in the method that undergo parseInt. Change your method to look like this and tell us what you see as the output:

Expand|Select|Wrap|Line Numbers
  1.         private void btnAddActionPerformed(ActionEvent evt)
  2.         {
  3.             // Create cd to add
  4.             CdwArtist newCD = new CdwArtist();
  5.             newCD.setArtist(artistField.getText());
  6.             newCD.setName(cdNameField.getText());    
  7.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  8.                         System.out.println("itemField.getText(): " + itemField.getText());
  9.             newCD.setNstock(Integer.parseInt(nstockField.getText())); //This is where it says the error shows up.
  10.                         System.out.println("nstockField.getText(): " + nstockField.getText());
  11.             newCD.setPrice(Float.parseFloat(priceField.getText()));
  12.  
  13.             // Add cd to list
  14.             listModel.addElement(newCD);
  15.             currCD = listModel.size()-1;  // sets currCD to added index
  16.  
  17.  
  18.             // Clear the text fields after add
  19.             artistField.setText(null);
  20.             cdNameField.setText(null);    
  21.             itemField.setText(null);
  22.             nstockField.setText(null);
  23.          priceField.setText(null);
  24.  
  25.             }// end ADD
  26.  
Hope that works and good luck,

-blazed
Jul 29 '07 #3

P: 38
I do not know how to reply to this. You both seem to indicate that the problem lies in my ADD button action event, but that works fine.

It is not until I coded my PREV button action event that the problem occurs.

Both my nstock and itemno fields are in fact intergers, and my application works without flaw until I coded this PREV button. Does that not indicate a probelm with the PREV button code?
Expand|Select|Wrap|Line Numbers
  1.     private void btnPrevActionPerformed(ActionEvent evt)
  2.         {
  3.             // Grab Previous cd 
  4.             CdwArtist newCD = (CdwArtist) listModel.get( currCD-- );
  5.             newCD.setArtist(artistField.getText());
  6.             newCD.setName(cdNameField.getText());    
  7.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  8.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  9.             newCD.setPrice(Float.parseFloat(priceField.getText()));        
  10.  
  11.             }// end PREV
All this button should do is take the information from the previous cd and put it back into my text fields for viewing.

It works fine when I enter the information into the fields, hit ADD and enter it into my JList.
Jul 29 '07 #4

Expert 10K+
P: 11,448
I do not know how to reply to this. You both seem to indicate that the problem lies in my ADD button action event, but that works fine.

It is not until I coded my PREV button action event that the problem occurs.

Both my nstock and itemno fields are in fact intergers, and my application works without flaw until I coded this PREV button. Does that not indicate a probelm with the PREV button code?
Expand|Select|Wrap|Line Numbers
  1.     private void btnPrevActionPerformed(ActionEvent evt)
  2.         {
  3.             // Grab Previous cd 
  4.             CdwArtist newCD = (CdwArtist) listModel.get( currCD-- );
  5.             newCD.setArtist(artistField.getText());
  6.             newCD.setName(cdNameField.getText());    
  7.             newCD.setItemno(Integer.parseInt(itemField.getText()));
  8.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  9.             newCD.setPrice(Float.parseFloat(priceField.getText()));        
  10.  
  11.             }// end PREV
All this button should do is take the information from the previous cd and put it back into my text fields for viewing.

It works fine when I enter the information into the fields, hit ADD and enter it into my JList.
You also use that same 'add' method in line 154 or so; as a matter of fact you
use that method for every action when whatever button is pressed. I'm afraid it's
a copy/paste thingy ;-)

kind regards,

Jos
Jul 29 '07 #5

P: 38
You are right, I am a beginner but that is just dumb on my part.
Copy/paste is exactly what I did and did not catch the error until you pointed it out. I wanted to work through one button at a time, so did not change the names when I did it because the new ones were not coded yet and it would error out.

I have however now changed the PREV button, and although the errors have moved down the chain a bit (I am at least in the right button now) they still point to errors with the same lines of code.
Expand|Select|Wrap|Line Numbers
  1. // PREVIOUS
  2.         btnPrev.setText("Previous");
  3.         btnPrev.addActionListener(new ActionListener()
  4.         {
  5.             public void actionPerformed(ActionEvent evt)
  6.             {
  7.                 btnPrevActionPerformed(evt);
  8.             }
  9.         });
  10.         getContentPane().add(btnPrev);
Would the method types be different pulling information from the JList than they were going in? If it were an INT going in, it would be an INT coming back out would it not? The field is coded as such, so I would think nothing would change there. I thought I just had a syntax issue, but it is looking like a bigger problem ... no?
Jul 29 '07 #6

Expert 10K+
P: 11,448
You are right, I am a beginner but that is just dumb on my part.
Copy/paste is exactly what I did and did not catch the error until you pointed it out. I wanted to work through one button at a time, so did not change the names when I did it because the new ones were not coded yet and it would error out.

I have however now changed the PREV button, and although the errors have moved down the chain a bit (I am at least in the right button now) they still point to errors with the same lines of code.
Expand|Select|Wrap|Line Numbers
  1. // PREVIOUS
  2.         btnPrev.setText("Previous");
  3.         btnPrev.addActionListener(new ActionListener()
  4.         {
  5.             public void actionPerformed(ActionEvent evt)
  6.             {
  7.                 btnPrevActionPerformed(evt);
  8.             }
  9.         });
  10.         getContentPane().add(btnPrev);
Would the method types be different pulling information from the JList than they were going in? If it were an INT going in, it would be an INT coming back out would it not? The field is coded as such, so I would think nothing would change there. I thought I just had a syntax issue, but it is looking like a bigger problem ... no?
Well, as far as I can see your btnPrevActionPerformed method suffers from that
same copy/paste virus too: i.e. it too tries to parse an Integer from a JTextField.

I think you should design your prev/next/add/whatever actions first before you
attempt to implement anything at all.

kind regards,

Jos
Jul 29 '07 #7

P: 38
That is the crux of my problem, this is my design, this is what I sat down and came up with.
I have never done this before, so each step I take is the first in that direction, I do not know any other way to do this.
I understand what you are saying, (I think)
Expand|Select|Wrap|Line Numbers
  1. newCD.setItemno(Integer.parseInt(itemField.getText()));
  2.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  3.             newCD.setPrice(Float.parseFloat(priceField.getText()));
are all parsing integers, but getting text ....if this is the problem, (which I do not doubt what you say), but why would this work in my ADD button but not here?
Jul 29 '07 #8

Expert 10K+
P: 11,448
That is the crux of my problem, this is my design, this is what I sat down and came up with.
I have never done this before, so each step I take is the first in that direction, I do not know any other way to do this.
I understand what you are saying, (I think)
Expand|Select|Wrap|Line Numbers
  1. newCD.setItemno(Integer.parseInt(itemField.getText()));
  2.             newCD.setNstock(Integer.parseInt(nstockField.getText()));
  3.             newCD.setPrice(Float.parseFloat(priceField.getText()));
are all parsing integers, but getting text ....if this is the problem, (which I do not doubt what you say), but why would this work in my ADD button but not here?
Shouldn't that 'prev' button read 'delete'? From what I see from your code you
want to delete that CD from your inventory. Deleting a CD is easy: just remove
it from your JList model and revalidate the display of it.

kind regards,

Jos
Jul 30 '07 #9

P: 38
No. The PREV button should pull in the previous record.
If you see a flaw in my code that does not indicate this please point it out because I do not.

The DELETE button will delete a record, but I have not even started on that buttun yet.
I put the architecture in the code so that I could see it as a reminder of everything I want to accomplish this week. It is one of several buttons I want to code before Friday.
Add was first, it works.
Prev is next, it does not work.
Next, Delete, Search, Modify, First and Last are all to come ....
Jul 30 '07 #10

Expert 10K+
P: 11,448
No. The PREV button should pull in the previous record.
If you see a flaw in my code that does not indicate this please point it out because I do not.

The DELETE button will delete a record, but I have not even started on that buttun yet.
I put the architecture in the code so that I could see it as a reminder of everything I want to accomplish this week. It is one of several buttons I want to code before Friday.
Add was first, it works.
Prev is next, it does not work.
Next, Delete, Search, Modify, First and Last are all to come ....
Ok, but what do you mean by 'pull in' a record? Copy the values back to the
textfields again? If so, just read the CD values and 'setText()' them back to
those JTextFiels; there's no need to parse String values, you have to convert
ints etc. *back* to String values to be able to setText() them again. There's
also no need to create a new CD object for that.

Or am I way off again?

kind regards,

Jos
Jul 30 '07 #11

P: 38
Got it. My terminology was throwing you off.
I was formatting text as I took it from the GUI fields and put it in the jlist.
When I took it back from the jlist to re-populate the fields I had to format it back to its original state.
This is what they should have looked like.
Expand|Select|Wrap|Line Numbers
  1. artistField.setText(newCD.getArtist());
  2.             cdNameField.setText(newCD.getName());    
  3.             itemField.setText(String.valueOf(newCD.getItemno()));
  4.             nstockField.setText(String.valueOf(newCD.getNstock()));
  5.             priceField.setText(formatter.format(newCD.getPrice()));
I do have a question you could possibly help me with, if I can explain it correctly.

Expand|Select|Wrap|Line Numbers
  1. if (--currCD<0) currCD = listModel.size()-1;
  2.             CdwArtist newCD = (CdwArtist) listModel.get( currCD );
When hitting my PREVIOUS button, this function will de-increment my currCD until I am at the very first record, and then loop back to the very last record and continue the process.
My list is ever growing, when using my NEXT button, how will be able to tell that I am at the LAST record so that I can loop back to the first and continue?

Does that make sense?
Jul 30 '07 #12

Expert 10K+
P: 11,448
Does that make sense?
I guess; Does something like this do?

Expand|Select|Wrap|Line Numbers
  1. if (++currCD >= listModel.size()) currCD= 0;
  2.  
kind regards,

Jos
Jul 30 '07 #13

P: 38
Works like a charm, and alot easier than what I was trying to do.

Thanks, you were a great help to me today.
Jul 30 '07 #14

Post your reply

Sign in to post your reply or Sign up for a free account.