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: Tue, 20 Oct 2015 09:01:06 +0200 Organization: Aioe.org NNTP Server Lines: 45 Message-ID: References: NNTP-Posting-Host: +3z0s+YzjUgNSOnfi6TODw.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:8687 Il 17.10.2015 16.49, Gulp® ha scritto: > Riassumendo, al momento sono messo così > if((evt.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK) { > if(evt.getKeyCode() == KeyEvent.VK_M){ > //Frame f=SwingUtilities.getAncestorOfClass(Frame.class, > evt.getComponent()); //da errore di type > Frame f=(Frame) evt.getSource(); //l'ascoltatore di jtextField > disturba anche se ho messo this.addKeyListener(new KeyTab()); > f.dispose(); > //dovrei poi acquisire frame di MENU.java per aprire il menu > } > //i seguenti funzionano entrambi > if(evt.getKeyCode() == KeyEvent.VK_D){ > if > (JTextField.class.isAssignableFrom(evt.getComponent().getClass())){ > JTextField textField = (JTextField) > evt.getComponent() ; > String oggi=Uty.Today(true); > textField.setText(oggi); > } > } > if(evt.getKeyCode() == KeyEvent.VK_T){ > if(JTextField.class.isAssignableFrom(evt.getComponent().getClass())){ > JTextField textField = (JTextField) > evt.getComponent() ; > textField.setText("Torino"); > } > } Che cos'e' this.addKeyListener(new KeyTab());? Nel senso, cos'e' this e cos'e KeyTab. Se il test: JTextField.class.isAssignableFrom(evt.getComponent().getClass()) e' vero, allora deve funzionare anche: SwingUtilities.getAncestorOfClass(Frame.class, evt.getComponent()); sempre che stiamo parlando dello stesso evt, e che effettivamente il contenitore di evt.getComponent() sia effettivamente un'istanza di Frame. puoi usare anche: SwingUtilities.getWindowAncestor(evt.getComponent()) che pero' si ferma al primo contenitore sottoclasse di java.awt.Window, quindi anche Frame o ogni altro contenitore che derivato, magari chiamato ricorsivamente se nella tua discendenza di componenti avessi piu' di una Window (che pure e' un java.awt.Component). Mi sembra che nel tuo progetto abbia mescolato componenti awt e swing, la qual cosa potrebbe portare una certa confusione.