?
Solved

Jave program has created two GUI's instead of one with combined appearance and function

Posted on 2011-03-08
4
Medium Priority
?
241 Views
Last Modified: 2012-05-11
hi, regarding the attached code, i've made a mistake somewhere so instead of a single GUI with red background, a label and a file/quit option and my buttons with action listeners i have two GUI's one with the buttons and listeners and the other with a red background, any suggestions how to incorporate the two please?  i'm new to this and i'm obviously missing something fundamental.  thakns
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

import java.awt.event.ActionListener; 


public class BookGUI extends JFrame implements ActionListener

{
	

	//String addBook="";
	// public ArrayList<Book> books;
	
	//Book books = new Book ("", "", 0, "", 0);
	Book book = new Book("", "", 0, "", 0);
	String title  = "";
	String author  = "";
	int year = 0;
	String publisher  = "";
	double cost = 0;
	double total = 0;
	boolean goodInput = false;
	
		
	public BookShelf bookShelf = new BookShelf();
    public static final int WIDTH = 400;
    public static final int HEIGHT = 100;

    //Creates & displays a window of the class FlowLayoutDemo
    public static void main(String[] args)
    {
        BookGUI gui = new BookGUI( );
        gui.setVisible(true);
    }
    
   // public String getTitle()
   // {
    //    return title;
    //}
    
    public void setTitle(String title) //this is relevant
    {
        this.title = title;
    }
    
    public void setAuthor(String author) //this is relevant
    {
        this.author = author;
    }
    
    public void setYear(int year) //this is relevant
    {
        this.year = year;
    }
    public void setPublisher(String publisher) //this is relevant
    {
        this.publisher = publisher;
    }
    
    public void setCost(double cost) //this is relevant
    {
        this.cost = cost;
    }
    
    public BookGUI( )
    {
    	JFrame frame = new JFrame ("Books");

    	Container contentpane = frame.getContentPane();
    	
    	JLabel label = new JLabel ("Assignment One");
    	contentpane.add(label);
    	
    	JMenuBar menubar = new JMenuBar();
    	frame.setJMenuBar(menubar);
    	
    	frame.pack();
    	frame.setVisible(true);
    	
    	JMenu fileMenu = new JMenu("File");
    	JMenuItem quitItem = new JMenuItem("Quit");
    	fileMenu.add(quitItem);;
    	contentpane.setBackground(Color.red);
    	
    	setSize(WIDTH, HEIGHT);
        addWindowListener(new WindowDestroyer( ));
        setTitle("GUI Assignment");
        Container content = getContentPane( );

        content.setLayout(new FlowLayout());
             
        JButton button1 = new JButton("Hightest Price Paid");
        content.add(button1);
        button1.addActionListener(this);
        //contentPane.add(button1);
        
        JButton button2 = new JButton("Cost of BookShelf");
        content.add(button2);
        button2.addActionListener(this);
        
        JButton button3 = new JButton("Size of BookShelf");
        content.add(button3);
        button3.addActionListener(this);
        
        JButton button4 = new JButton("Add Book");
        content.add(button4);
        button4.addActionListener(this); 
        
     // Alows the class to quit.
        //private void quit() 
            //System.exit(0);
              
    }
         
    public void actionPerformed(ActionEvent e)
    {
    	
        if (e.getActionCommand().equals("Add Book"))
       //book = JOptionPane.showInputDialog("Add Book");
        {     //set up the book object with all the data passed in
        title = JOptionPane.showInputDialog("Title");
        author = JOptionPane.showInputDialog("Author");
        publisher = JOptionPane.showInputDialog("Publisher");
        //cost = JOptionPane.showInputDialog("Cost");
        //cost = Double.parseDouble(JOptionPane.showInputDialog("Cost"));
        do{
        try { 
        	cost = Double.parseDouble(JOptionPane.showInputDialog("Cost"));
        	book.setCost(cost);
        	goodInput = true;
        	} 
        catch (NumberFormatException nfe){          
        JOptionPane.showMessageDialog(this, "Numerical entry required. Please try again");
        	} 
        }while (!goodInput);
        	
        	
        book.setTitle(title);
        book.setAuthor(author);
        book.setPublisher(publisher);
       	bookShelf.addBook(book);
        	
        String message =  "The title of the book is :" + title + 
		"the Author of the Book is : " + author + " and it's published by " + publisher + "and it costs" + cost + "euro";
        JOptionPane.showMessageDialog(null, message, "Book Details", JOptionPane.PLAIN_MESSAGE);
        }
        else if (e.getActionCommand().equals("Size of BookShelf")) {
            int sizeOfBookShelf = bookShelf.sizeOfBookshelf();
            String message = "The book shelf has " + sizeOfBookShelf + " book(s)";
            JOptionPane.showMessageDialog(this, message);
        }
        else if (e.getActionCommand().equals("Cost of BookShelf")) 
        {
        	double costOfBookshelf = bookShelf.costOfBookShelf();
        	String message = "The book shelf value is " + total + costOfBookshelf + "Euro";
        	JOptionPane.showMessageDialog(this, message);
        }
        
        else
        {
        	System.out.println("Error!");
        }
        
        System.exit( 0 );

Open in new window

0
Comment
Question by:t38
  • 2
  • 2
4 Comments
 
LVL 92

Expert Comment

by:objects
ID: 35074152
>           JFrame frame = new JFrame ("Books");

change that to:


          JFrame frame = this;

public BookGUI( )
    {
    	JFrame frame = new JFrame ("Books");

    	Container contentpane = frame.getContentPane();
    	
    	JLabel label = new JLabel ("Assignment One");
    	contentpane.add(label);
    	
    	JMenuBar menubar = new JMenuBar();
    	frame.setJMenuBar(menubar);
    	
    	frame.pack();
    	frame.setVisible(true);
    	
    	JMenu fileMenu = new JMenu("File");
    	JMenuItem quitItem = new JMenuItem("Quit");
    	fileMenu.add(quitItem);;
    	contentpane.setBackground(Color.red);
    	
    	setSize(WIDTH, HEIGHT);
        addWindowListener(new WindowDestroyer( ));
        setTitle("GUI Assignment");
        Container content = getContentPane( );

        content.setLayout(new FlowLayout());
             
        JButton button1 = new JButton("Hightest Price Paid");
        content.add(button1);
        button1.addActionListener(this);
        //contentPane.add(button1);
        
        JButton button2 = new JButton("Cost of BookShelf");
        content.add(button2);
        button2.addActionListener(this);
        
        JButton button3 = new JButton("Size of BookShelf");
        content.add(button3);
        button3.addActionListener(this);
        
        JButton button4 = new JButton("Add Book");
        content.add(button4);
        button4.addActionListener(this); 
        
     // Alows the class to quit.
        //private void quit() 
            //System.exit(0);
              
    }

Open in new window

0
 

Author Comment

by:t38
ID: 35074315
Thanks - File/Quit is still missing though.
0
 
LVL 92

Accepted Solution

by:
objects earned 2000 total points
ID: 35074321
you don't add fileMenu to the menubar
0
 

Author Closing Comment

by:t38
ID: 35074453
Thanks for your assistance.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses
Course of the Month13 days, 23 hours left to enroll

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question