Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45

    [JAVA] error: cannot find symbol

    Salve, mi son perso in un bicchiere d'acqua... Volevo settare lo "sfondo", aggiungendo un oggetto della classe Sfondo al frame della classe Finestra, ma:

    error: cannot find symbol
    frame.add(ss);
    ^
    symbol: variable frame
    location: class Negozio
    1 error

    Problema di visibilità variabili? Ereditarietà o cosa? Ringrazio anticipatamente

    codice:
    import java.awt.*;				
    import java.awt.event.*;
    import java.io.IOException;
    import java.net.URI;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JComponent.*; //Colore tasti
    //import java.awt.Desktop;
    
    class Finestra{
    	
    	//Attributi
    	private JFrame frame;
    	private JPanel b;
    	private JMenuBar menbar;
    	private JMenu [] men;
    	private JMenuItem [] menit;
    	private JLabel lpezzo,lmarca,lcosto,lprovenienza;
    	private JTextField pezzo,marca,costo,provenienza;
    	private JButton bapri,bsalva,binserisci,bcancella,bordina,btrova;
    	private JTable table;
    	private DefaultTableModel model;
    	Object[][] Magazzino = {
    	    {"asd", "lol", new Integer(1000), "lal"},
    	    
            };
            String[] InfoArticolo = {"re",
                                    "go",
                                    "Css",
                                    "Pa"};
    	
    	public Finestra(){
    	b=new JPanel(); 
    	frame=new JFrame();
    	menbar = new JMenuBar();
    	men = new JMenu[3];
    	menit = new JMenuItem[8];
    	lpezzo = new JLabel("re");
    	lmarca = new JLabel("go");
    	lcosto = new JLabel("Css");
    	lprovenienza = new JLabel("Pa");
    	pezzo = new JTextField();
    	marca = new JTextField();
    	costo = new JTextField();
    	provenienza = new JTextField();
    	bapri = new JButton("Apri");
    	bsalva = new JButton("Salva");
    	binserisci = new JButton("Inserisci");
    	bcancella = new JButton("Cancella");
    	bordina = new JButton("Ordina");
    	btrova = new JButton("Trova");
    work();
    		
    	}
    		
    		public void work(){	
    			
    		frame.add(b); //Aggiunta pannello B al Frame.
    		b.setLayout(null); 	
    			
    		pezzo.setBounds(60,100,100,30);
    	        b.add(pezzo);
    		lpezzo.setBounds(75,50,70,70);
    		b.add(lpezzo);
    			
    		marca.setBounds(185,100,100,30);
    		b.add(marca);
    		lmarca.setBounds(217,50,70,70);
                    b.add(lmarca);
    		
    		costo.setBounds(310,100,100,30);
    		b.add(costo);
    		lcosto.setBounds(342,50,70,70);
                    b.add(lcosto);
    		
    		provenienza.setBounds(435,100,100,30);
    		b.add(provenienza);
    		lprovenienza.setBounds(449,50,70,70);
                    b.add(lprovenienza);	
    		
    		bsalva.setBounds(300,30,100,30);
    		b.add(bsalva);
    		bsalva.setForeground(Color.RED);
    		
    		bapri.setBounds(190,30,100,30);
    		b.add(bapri);
    		bapri.setForeground(Color.RED);
    		
    		binserisci.setBounds(75,190,100,30);
    		b.add(binserisci);
    		binserisci.setForeground(Color.BLUE);
    		
    		bcancella.setBounds(190,190,100,30);
    		b.add(bcancella);
    		bcancella.setForeground(Color.BLUE);
    		
    		bordina.setBounds(305,190,100,30);
    		b.add(bordina);
    		bordina.setForeground(Color.BLUE);
    		
    		btrova.setBounds(420,190,100,30);
    		b.add(btrova);
    		btrova.setForeground(Color.BLUE);
    		
    		//Instanza dei JMenu
    		for(int i=0;i<3;i++){
    			men[i] = new JMenu();
    		}
    		
    		//Instanza dei JMenuItem
    		for(int i=0;i<8;i++){
    			menit[i] = new JMenuItem();
    		}
    			
    		frame.setJMenuBar(menbar); //Aggiunge jmenubar alla finestra
    		
    		//Testo JMenu
    		men[0].setText("File");
    		men[1].setText("Modifica");
    		men[2].setText("?");	
    			
    		//Aggiunge i jmenu al jmenubar
    		for(int i=0;i<3;i++){
    			menbar.add(men[i]);
    		}
    		
    		//Testo JMenu Item
    		menit[0].setText("Apri");
    		menit[1].setText("Salva");
    		menit[2].setText("Inserisci");
    		menit[3].setText("Cancella");
    		menit[4].setText("Ordina");
    		menit[5].setText("Trova");
    		menit[6].setText("Guida in linea");
    		menit[7].setText("Informazioni");
    		
    		//Aggiunge i JMenu Item[0]
    		men[0].add(menit[0]);
    		men[0].add(menit[1]);
    		
    		//Aggiungo i JMenu Item[1]
    		for(int i=2;i<6;i++){
    			men[1].add(menit[i]);
    		}
    		
    		//Aggiunge i JMenu Item[2]
    		men[2].add(menit[6]);
    		men[2].add(menit[7]);
    
    
    
    	JTable table = new JTable(Magazzino,InfoArticolo);
    	JScrollPane scrollPane = new JScrollPane(table);
            model=new DefaultTableModel(Magazzino,InfoArticolo);
    	table.setModel(model);
    
            
            b.add(scrollPane);
    	scrollPane.setBounds(55,295,500,100);
    
    	binserisci.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ee)
                {
                        String r[]=new String[4];
                         r[0]=pezzo.getText();
                         r[1]=marca.getText();
                         r[2]=costo.getText();
                         r[3]=provenienza.getText();
                         pezzo.setText("");
                         marca.setText("");
                         costo.setText("");
    		     provenienza.setText("");
    		     model.addRow(r);
    		     pezzo.requestFocus();
    	}
    } );
    
    	menit[2].addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ee)
                {
                        String r[]=new String[4];
                         r[0]=pezzo.getText();
                         r[1]=marca.getText();
                         r[2]=costo.getText();
                         r[3]=provenienza.getText();
                         pezzo.setText("");
                         marca.setText("");
                         costo.setText("");
    		     provenienza.setText("");
    		     model.addRow(r);
    		     pezzo.requestFocus();
    	} 
    } );
    
           
    	
    	        frame.setSize(600, 600); //Dimensioni in pixel della finestra
    		frame.setVisible(true);	
    		frame.setLocationRelativeTo(null); //Imposta finestra al centro del desktop
    		frame.setIconImage(Toolkit.getDefaultToolkit().getImage("img/o.jpg"));
    	        frame.setTitle("Frame");
                	frame.setResizable(false);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Impostazione operazione di chiusura processo con la X
    		}
    		
    		
    		
    	}
    
    	
    
    
    class Sfondo extends JPanel{
    	private Image image;
    	
    	public Sfondo(String back){
    		try {
    			image = ImageIO.read(new File (back));
    		} 
    		catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		if (image==null)
    			return;
    		g.drawImage(image,0,0,null);
    	}
    }
    	
    
    class Negozio{
    	public static void main (String[] s){
    		Finestra c=new Finestra();
    		Sfondo ss=new Sfondo("wallpaper.jpg");
    		frame.add(ss);
    		}
    	
    	}

  2. #2
    come fai a fare frame.ss se frame non esiste nella classe?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45
    Originariamente inviato da franksisca
    come fai a fare frame.ss se frame non esiste nella classe?
    il "problema" sarebbe proprio quello; come potrei fare per far in modo di aggiungere l'oggetto ss al JFrame frame della classe Finestra?

  4. #4
    ma perché non estendi la classe finestra con JFrame?
    da qualche tempo vedo che molti utenti creano il JFrame all'interno della classe...ma non è meglio estendere JFrame alla classe gui che si sta creando?

    o estendi finestra a JFrame così da ereditare tutti i metodi
    oppure istanzi la classe Sfondo nella classe finestra.

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45
    Originariamente inviato da schumy2000
    ma perché non estendi la classe finestra con JFrame?
    da qualche tempo vedo che molti utenti creano il JFrame all'interno della classe...ma non è meglio estendere JFrame alla classe gui che si sta creando?
    Ho avuto problemi con la JTable e ho preferito fare così...

    Originariamente inviato da schumy2000
    o estendi finestra a JFrame così da ereditare tutti i metodi
    oppure istanzi la classe Sfondo nella classe finestra.

    Ciao.
    Ho provato, non mi da nessun errore ma lo sfondo resta bianco, nonostante l'immagine è nella stessa cartella del sorgente.

    EDIT: Risolto, dovevo impostare il setBounds anche per l'oggetto ss

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.