Solved

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

Posted on 2011-03-08
4
229 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 500 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

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
JDeveloper 12c for 32 bit 4 85
Java Options in Zimbra Server 2 54
varialbe initialization 11 33
login form jsp example 2 26
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

803 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