2010-06-17 6 views
1

Java se plaint!Impossible de trouver Symbol = new

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

QUESTION: Pourquoi ai-je cette erreur? ... tout semble correct.

c'est le codage:

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

Bar() est

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

        } 
       }); 
      } 
     }); 

    } 
} 

Répondre

5

Le problème est que vous avez un constructeur qui attend un JFrame:

public Bar(final JFrame frame) 

mais vous souciez l'appelant sans arguments:

JPanel panel = new Bar(); 

Vous devez passer Bar une instance d'un JFrame.

+0

Je ne comprends pas. Veuillez expliquer –

+0

JPanel panel = new Bar (new JFrame()); ... mais vous aurez besoin de plus que ça pour le faire fonctionner (ça va le compiler quand même). Vous avez encore besoin de rendre le cadre visible etc ... – TofuBeer

+0

Ok ça marche. Maintenant, où dois-je commencer à ajouter le code pour rendre le cadre visible et définir la taille, puisque ce nouveau Frame() n'a pas exactement un nom de variable –

0

Vous appelez le constructeur Bar(), mais vous n'avez pas de constructeur sans argument. Vous devez passer l'argument JFrame.

0

En plus de la réponse TofuBeer - pensez à utiliser un IDE comme eclipse ou netbeans (pour ne citer que deux exemples). Ces IDE montreront déjà des erreurs de ce type en tapant le code.