Path: csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dr.UgoGagliardelli" Newsgroups: it.comp.java Subject: Re: da package a jframe Date: Mon, 26 Oct 2015 13:48:07 +0100 Organization: Aioe.org NNTP Server Lines: 72 Message-ID: References: NNTP-Posting-Host: uQ8aIFgByAQ/Ub1qVJw7uQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com it.comp.java:8729 Il 25.10.2015 23.09, Gulp® ha scritto: > Il 21/10/15 03:08, Dr.UgoGagliardelli ha scritto: >> Questa sinceramente non l'ho capita per niente. >> >> L'hai gia' detto qualche altra volta, ma non ci ho fatto caso: cosa >> intendi per "trovandomi in un package"? > > Probabilmente č un modo di pensare che mi porto dal basic, li se scrivo > in un modulo pippo.bas, riesco a "vedere" e richiamare le altre > procedure quando sono dichiarate Public anche senza fare import pippo.bas > >> E "Mica posso importare MENU!" secondo il tuo modo di vedere cosa >> significa? > > Per poter utilizzare (vedere) delle classi dichiarate nei package devo > fare un import: > > import pubblico.Ini; //č una classe con cui scrivo e leggo un file .ini > import pubblico.Uty; // sono varie utility che richiamo al bisogno. Chiariamo, l'import e' indispensabile solo quando devi importare qualcosa da un package diverso da quello dichiarato nella classe stessa. Ovvero, se: package pubblico; public class KeyTab { ... } non hai nessuna nesessita' di importare esplicitamente ne' pubblico.Ini e neanche pubblico.Uty perche' appartengono allo stesso pachage di pubblico.KeyTab. > > Se sto scrivendo del codice dentro una classe KeyTab che si trova in un > package che ho chiamato pubblico, la scrittura: > > Frame fm= new MENU(); > fm.setVisible(true); > > mi da errore: cannot find symbol, symbol: class MENU, location class KeyTab > > Eppure la class MENU č dichiarata public: > public class MENU extends javax.swing.JFrame { Ma qual e' il package della classe MENU? il fatto che sia dichiarata public e' una condizione necessaria per poter essere utilizzata da altre classi, ma se appartiene ad un package diverso dovrai importala con un'istruzione import. > > e, come dicevo, non posso fare import. > la class MENU č main class dell'applicazione. ... che non significa niente. Se ne hai bisogno la importi e basta. > > Dopo aver letto il tuo post, avevo pensato di arrivarci a ritroso: > Container c=f.getParent(); > Component p[]=c.getComponents(); > f.dispose(); > //ciclo p in cerca del form MENU > for( Component fs : p ) { > if (fs.getName().equals("MENU")){ > fs.setVisible(true); > break; > } > ... > ma non č corretto. Ho controllato, quell'array č in realtą vuoto. > Rivedendo questo codice, ho notato che hai utilizzato f.dispose(), questo metodo rende non-visualizzabili tutti i componenti posseduti da f e li distrugge. Se f era un child del Container c parent di f, e se f era anche l'unico child, allora c.getComponents() non puo' che ritornare un array vuoto. Se non hai l'effettiva necessita' di chiudere l'intera applicazione, non usare f.dispose(), magari ti basta f.setVisible(false);