2010-06-17 104 views
1

Java正在抱怨!找不到符号= new

cannot find symbol 
symbol : constructor Bar() 
location: class Bar 
     JPanel panel = new Bar(); 
         ^

问题:为什么我得到这个错误?......一切似乎都是正确的。

这是编码:

public class JFrameWithPanel 
    { 
     public static void main(String[] args) 
     { 
      JPanel panel = new Bar(); 
     } 
    } 

酒吧()是

public class Bar extends JPanel 
{ 
    public Bar(final JFrame frame) 
    { 
     super(new BorderLayout()); 
     String[] tests = { "A+ Certification", "Network+ Certification", "Security+ Certification", "CIT Full Test Package" }; 
     JComboBox comboBox = new JComboBox(tests); 
     TextArea text = new TextArea(5, 10); 
     add(new JLabel("Welcome to the CIT Test Program ")); 
     add(new JLabel("Please select which Test Package from the list below.")); 

     JMenuBar menuBar = new JMenuBar(); 
     JMenu fileMenu = new JMenu("File"); 
     JMenu editMenu = new JMenu("Edit"); 
     JMenu helpMenu = new JMenu("Help"); 
     menuBar.add(fileMenu); 
     menuBar.add(editMenu); 
     menuBar.add(helpMenu); 
     JMenuItem newMenu = new JMenuItem("New (Ctrl+N)"); 
     JMenuItem openMenu = new JMenuItem("Open (Ctrl+O)"); 
     JMenuItem saveMenu = new JMenuItem("Save (Ctrl+S)"); 
     JMenuItem exitMenu = new JMenuItem("Exit (Ctrl+W)"); 
     JMenuItem cutMenu = new JMenuItem("Cut (Ctrl+X)"); 
     JMenuItem copyMenu = new JMenuItem("Copy (Ctrl+C)"); 
     JMenuItem pasteMenu = new JMenuItem("Paste (Ctrl+V)"); 
     JMenuItem infoMenu = new JMenuItem("Help (Ctrl+H)"); 
     fileMenu.add(newMenu); 
     fileMenu.add(openMenu); 
     fileMenu.add(saveMenu); 
     fileMenu.add(exitMenu); 
     editMenu.add(cutMenu); 
     editMenu.add(copyMenu); 
     editMenu.add(pasteMenu); 
     helpMenu.add(infoMenu); 
     this.add(comboBox, BorderLayout.NORTH); 
     this.add(text, BorderLayout.SOUTH); 
     frame.setJMenuBar(menuBar); 
     add(new JButton("Select") 
     { 
      { 
       addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
         frame.dispose(); 
         JOptionPane.showMessageDialog(frame, "IT WORKS!"); 

        } 
       }); 
      } 
     }); 

    } 
} 

回答

5

的问题是,你有期待一个JFrame构造函数:

public Bar(final JFrame frame) 

但你不在乎不带参数地调用它:

JPanel panel = new Bar(); 

您需要传递Bar一个JFrame的实例。

+0

我没有明白。请解释 – 2010-06-17 06:54:08

+0

JPanel panel = new Bar(new JFrame()); ......但是你需要更多的东西才能使它工作(虽然这会让它编译)。你仍然需要使框架可见等... – TofuBeer 2010-06-17 07:00:06

+0

好吧,工程。现在我将开始添加代码以使框架可见并设置大小,因为这个新的Frame()并不完全具有变量名称 – 2010-06-17 07:11:41

0

您正在调用Bar()构造函数,但是您没有无参数构造函数。您需要传递JFrame参数。

0

除了TofuBeer的答案 - 考虑使用IDE如eclipse或netbeans(仅举两个例子)。这些IDE将在输入代码时显示此类错误。