• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Making a GUI run and displaying data from a program that is already created.

 
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello All,
I hope the title wasn't too confusing. First I will start with this week's requirements, then the code I have so far. Again I am just looking to get pointed in the right direction.

Requirements for Week 7:
• Modify the Inventory Program to use a GUI by either
1. Adding a new class that extends JFrame (example in Chapter 11), or
2. By creating a new JDeskTop Application project.

• Use an ArrayList or other automatically resizable collection instead of an Array to store your products.

• The GUI should display the information of the first product in your collection, including the item number, the name of the product, the number of units in stock, the price of each unit, and the value of the inventory of that product.

• In addition, the GUI should display the value of the entire inventory. Since this requires a loop of your collection, out this functionality in a separate method of your GUI class. This will allow you to call it only when updating the total is required.

• At this point, all your main method should do is create an instance of your GUI class, set the Window size, setDefaultCloseOperation to EXIT_ON_CLOSE, start the GUI by calling it’s show method and get out of the way. (Desktop app will do this for you).

• The Collection of products now belongs to the GUI class as a class level variable. This will allow all methods in the GUI class to have access to it.

• If you use the Desktop Application, it will create a read-only method named initComponents. As you drag components to the screen, initialization code for them will be added to this method. The method is then called from your GUI constructor. Things you add manually, like your collection cannot go in this method. You need to initialize them in the constructor yourself.

Do not use a series of pop-up dialog boxes. A GUI is a single screen that gives you access to all of the applications functionality. Pop-ups can be used for prompts, and when needed to collect specific data. But if you need values for 4 variables, use a single pop-up with four fields, not one popup per variable.

Post a zipped copy of the entire project.

I know, quite a bit to do here!






The last piece of coding is the source created from using Netbeans 7.2 GUI builder. From here, I am unable to figure out how to get 1 instance (I can remove the Item select box and text if it will make life easier) of the data stored in the Inventory program to display in the GUI, let alone even run the GUI. Any help would be greatly appreciated.
 
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Dan D'Apice wrote:The last piece of coding is the source created from using Netbeans 7.2 GUI builder...


And it's too wide for the code blocks here. Please re-read the UseCodeTags page thoroughly and edit your post accordingly.
I'd do it myself, but there are tons of ridiculously long lines there.

Winston
 
Dan D'Apice
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Ok, sorry about that Winston. Not sure how I'm going to minimize the code without making it non-readable. I'll see what I can do.
 
Dan D'Apice
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
OK, post has been re-edited. I put comments where the code was describing what I did. Hope that works. If not, let me know and I will try to adjust it.
 
Winston Gutkowski
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Dan D'Apice wrote:OK, post has been re-edited. I put comments where the code was describing what I did. Hope that works. If not, let me know and I will try to adjust it.


You missed a few, but I've fixed them by breaking them up. Do you see how much easier your thread is to read now?
The line limit here is around 90-100 characters and, to be honest, having them longer makes your code difficult to read anyway, so it's not a bad habit to get into. Personally I use 80.

But thanks for your efforts.

Winston
 
Dan D'Apice
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks again, Winston. I actually made a note to post ~80 characters per line in the future. Now, if I can just figure out how to get my array list incorporated into the GUI, I should be good. I'm not focusing on the drop box right now, just trying to get an instance of my array list into their respected text boxes...
 
Bartender
Posts: 825
5
Python Ruby Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

I am unable to figure out how to get 1 instance (I can remove the Item select box and text if it will make life easier) of the data stored in the Inventory program to display in the GUI, let alone even run the GUI.


I don't really get what issue exactly are you having.

The instructions you got are pretty clear:


  • Use an ArrayList or other automatically resizable collection instead of an Array to store your products.
  • The Collection of products now belongs to the GUI class as a class level variable. This will allow all methods in the GUI class to have access to it.


  • So what you're actually required to do is to have a field as part your gui class, that will be the above mentioned collection (say ArrayList). That collection will store your data, or in this case your inventory (books).

    Having that done, you can go further and implement details displaying.
    First of all, that component you are using is not "select box", but JComboBox. When you initialize your GUI you would need to populate that combo box (jComboBox1 in your code) to contain all the items stored in the collection. One approach is to actually add objects of your Book class to your combo box:

    But also note that what will be displayed to the user as items in combo box in this case is the result of toString() method of your Book class, so it would be good to modify it to return just basic information (e.g. just item name).
    Now you just need to add action listener to your jComboBox1 to trigger when the user changes the selection in combo box:
     
    Dan D'Apice
    Greenhorn
    Posts: 24
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Kemal,
    I actually took out the JComboBox and text to keep things simple (I hope). What I want to do is just populate the text fields of the GUI with their respected data. E.G. itemNumber would be placed in the Item Number text field, itemName would go in the Item Name text field, etc. After that, I need to display the total value of the item (inventory * price each) and display that in the Value of Item Stock text field. Finally I need to calculate and display the total for the entire inventory (all three of the array list) and display that in the Value of Entire Inventory text field. I understand how to set up listeners for each text field, but getting that data to the text field is where I am stumbling. You may have explained it in the last post, but I am not sure if I have to create another constructor and array list to bring the data over to the GUI or not.
     
    Dan D'Apice
    Greenhorn
    Posts: 24
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    OK, I've got to go back to the drawing board here. I'm going to go read some of my book(s) I have and see if I can come up with something. I'll check back here afterward. Thanks everyone for the help so far...
     
    Kemal Sokolovic
    Bartender
    Posts: 825
    5
    Python Ruby Java
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Dan D'Apice wrote:Kemal,
    What I want to do is just populate the text fields of the GUI with their respected data. E.G. itemNumber would be placed in the Item Number text field, itemName would go in the Item Name text field, etc. ...


    Since you keep your entire inventory in a collection (it contains all of the books) how do you choose of which one the details will be displayed? I don't really get what you mean...

    But if you want to keep the things simple for start, try this. For simplicity, create just one instance of your Book class (forget the collection for now). When you do that, you'll populate corresponding fields with the following:


    This is the example in case you have only one book to display.

    In the case of entire inventory, I wrote that in my previous post. You would have a field in your GUI class that would be some collection:

    Now, when you want to display details of a specific book, all you need to do is get it from the inventory collection and pass it as an argument to displayDetails() method shown above. How you're going to let the user choose the book to display is up to you; one approach is the one you had in the original post, using JComboBox with the list of all books from your inventory.
     
    Dan D'Apice
    Greenhorn
    Posts: 24
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Hey Kemal,
    Sorry I didn't respond earlier, I had some personal things to take care of yesterday. Anyway, thanks for that last posting. I'm going to give that a shot and see how it works out. Wish me luck....lol...I'm gunna need it....
     
    Consider Paul's rocket mass heater.
    reply
      Bookmark Topic Watch Topic
    • New Topic