Newsgroup: it.comp.java
Titolo: focus su JComponent

Ciao a tutti,
Vi prego di scusare la domanda un po' banale : Come faccio a settare il
focus per un JComponent?
Ho delle Dialog con sopra solo il bottone per chiudere la stessa...e mi sono
chiesto, ma se uno non ha il mouse?
ho notato la presenza di grabFocus e requestFocus, ma mi sa che non ha
capito come si usano! :-P
Mi date delucidazioni plesase?
grazie
Icaro
--
"...Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno
sprovveduto che non lo sa e la inventa...".
             Albert Einstein

 capito come si usano! :-P
Vedi la seconda mia risposta al post con tag [bug java] più sotto. C'è un
esempio

 wrote in message
news:acierg$uec$1...@newsreader.mailgate.org...

SI, ho dato un occhiata, ma non sono riuscito a settare il componente su cui
voglio il focus iniziale :,-(
Dov'e' che sbaglio?
import java.awt.event.*;
import javax.swing.*;
public class focusTest extends JFrame
{
    private JTextArea Txt = new JTextArea(" Area di Testo");
    private JButton bottone = new JButton(" Bottone ");
    public focusTest()
    {
        super();
        setSize(280,160);
        setLocation(50,50);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
        Txt.setSize(240,25);
        Txt.setLocation(20,37);
        Txt.setEditable(false);
        bottone.setSize(240,25);
        bottone.setLocation(20,77);
        getContentPane().add(Txt);
        getContentPane().add(bottone);
        getContentPane().setLayout(null);
        bottone.requestFocus();  // Perche' non va?
        setVisible(true);
    }
    public static void main (String argv[]) {new focusTest();}
}

         setVisible(true);
setVisible(true);
bottone.requestFocus();//E cosě?... Fammi sapere Ciao

 wrote in message
news:acitvk$fv9$1...@newsreader.mailgate.org...

 purtroppo neppure cosi' funge : -(
Altri suggerimenti?
Icaro

  purtroppo neppure cosi' funge : -(
In via puramente sperimentale cosa succede se forzi prima il focus su un
altro componente ovvero per ex:
        setVisible(true);
        Txt.requestFocus();
        bottone.requestFocus();
Chi ha il focus?

 wrote in message
news:acj05e$ic1$1...@newsreader.mailgate.org...

Il TextField :-(

 Altri suggerimenti?
Funzione se lo chiami con invokeLater() e ad es. in focusGained()
(implementando l'interfaccia FocusListener).
Al momento non ricordo altri metodi.
-- 
Bye,
  Mirko

 wrote in message
news:m3661ec...@mail.rccr.cremona.it...

Mi e' bastato questo :-D
Grazie mille a te ed ovviamente anche a Shannara .
Riporto , nel caso potesse essere utile a qulcuno, il codice corretto.
-- begin
import java.awt.event.*;
import javax.swing.*;
public class focusTest extends JFrame
{
    private JTextArea Txt = new JTextArea(" Area di Testo");
    private JButton bottone = new JButton(" Bottone ");
    public focusTest()
    {
        super();
        setSize(280,160);
        setLocation(50,50);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
        Txt.setSize(240,25);
        Txt.setLocation(20,37);
        bottone.setSize(240,25);
        bottone.setLocation(20,77);
     getContentPane().add(Txt);
        getContentPane().add(bottone);
        getContentPane().setLayout(null);
 setVisible(true);
 Runnable doFocus = new Runnable() {
           public void run() {
        bottone.requestFocus();
           }
 };
 SwingUtilities.invokeLater(doFocus);
    }
    public static void main (String argv[]) {new focusTest();}
}
--end

 Grazie mille a te ed ovviamente anche a Shannara .
Di niente

 wrote in message
news:m3661ec...@mail.rccr.cremona.it...

hem...piccolo intoppo!
se la finestra e' modale, il metodo non funge!
-- code Begin
 Runnable doFocus = new Runnable() {
           public void run() {
        bottone2.requestFocus();
           }
 };
....
....
 setModal(true);
 setVisible(true);
 SwingUtilities.invokeLater(doFocus);
-- code End
come si fa in questi casi? :-(

 wrote in message
news:acl33b$16k$1...@newsreader.mailgate.org...

Ho cantato troppo presto vittoria.....leggi il secondo post che ho scritto a
Mirko! :(
cmq siete davvero cortesi con un 'lamentone' come me...io avrei gia' perso
la pazienza :-P

 come si fa in questi casi?
Prova ad usare la seguente funzioncina (altrimenti mi arrendo: non avevo
capito che lavoravi con dialog modali comunque :))
    private void changeFocus(final Component source,
        final Component target)
    {
      SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          target.dispatchEvent(
            new FocusEvent(source, FocusEvent.FOCUS_GAINED));
        }
      });
    }
La richiami:
    setModal(true);
    changeFocus(Txt, bottone);
    setVisible(true);

 Prova ad usare la seguente funzioncina
Più semplice:
...
        addWindowListener(new WindowAdapter() {
     public void windowOpened(WindowEvent event) {
         if (bottone != null) {
      bottone.requestFocus();
  }
     }
});
        Txt.setSize(240,25);
....
        getContentPane().setLayout(null);
        setModal(true);
        setVisible(true);
A me così funziona...

| > > come si fa in questi casi?
| >
| > Prova ad usare la seguente funzioncina
|
--cut--
| A me cosě funziona...
Ed anche a me :-D
Grazie, sei un MITOOOOOOOOO!
Icaro!
PS: secondo te perche' in questo modo funge anche se la finestra e' modale e
nell'altro no?