2011-03-08 83 views
0

,eclipse在第72行到第86行(框架无法解析)时给了我很多错误,而且我也看不到标签或添加一个菜单栏,我认为所有的问题都是相关的,如果有人会投入更有经验的眼光,请稍等。埃里克关于下面的代码,Eclipse不会显示菜单栏,菜单项或JLabel

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() 
    { 
     frame = new JFrame ("Books"); 
     Container contentpane = frame.getContentPane(); 

     JLabel label = new JLabel ("Book GUI"); 
     contentPane.add(label); 

     JMenuBar menubar = new JMenuBar(); 
     frame.setJMenuBar(menubar); 

     frame.pack(); 
     frame.setVisible(true); 

     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); 

    // Alows the class to quit. 
     //private void quit() { 
      //System.exit(0); 

    } 
    } 
+0

你在结尾处有很多注释行。这些与这个问题真的有关吗? – 2011-03-08 21:02:42

+0

艾萨克 - 没有遗憾的意思是在我发布前整理它... – Eric 2011-03-08 21:07:44

回答

1

frame无法识别,因为您从未声明它。

JFrame frame = new JFrame ("Books");

frame = new JFrame ("Books");

你没有,但是,延长JFrame。您的意思是使用this而不是frame

+0

@伊萨克 - 感谢一堆,这真的让我盯着我的脸,但我是新来的这个东西。第87行的文件菜单和第88行的conentPAne仍然说他们无法解析,为什么会这样? – Eric 2011-03-08 21:07:08

+0

您声明'contentpane'时小写'p','fileMenu'永远不会声明。 – 2011-03-08 21:18:34

+0

谢谢,代码现在运行没有错误,但我有两个GUI - 一个与我的按钮和动作监听器,另一个有一个标题'书籍',但没有文件菜单 - 我想将标签和文件菜单合并到我的GUI与按钮,有什么建议? – Eric 2011-03-08 21:28:14