Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prelazak s jednog na drugo polje.

[es] :: Java :: Prelazak s jednog na drugo polje.

[ Pregleda: 2092 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Prelazak s jednog na drugo polje.13.04.2007. u 19:23 - pre 207 meseci
jdk1.6.0, Eclipse 3.2, nivo znanja: početni.

Na JPanel -u kreiram textualna polja, recimo 10 -ak. Potom:
Code:

    public void PostavkaFokusa(JFormattedTextField e) {
        JFormattedTextField source;
        source = e;

                if (source == t[0]){
                    t[1].setSelectionStart(0);
                    t[1].requestFocus();
                }
                else if (source == t[1]){
                    t[2].setSelectionStart(0);
                    t[2].requestFocus();
                }
                else if (source == t[2]){
                    t[3].setSelectionStart(0);
                    t[3].requestFocus();
                }
                                ...
                else if (source == t[9]){
                    t[10].setSelectionStart(0);
                    t[10].requestFocus();
                }                
    }

Kako bih ovo mogao elegantnije napisati? Odnosno, kraće, da pritiskom na enter prelazim na sledeće text polje a sa, recimo, SHIFT + ENTER se vraćam na pređašnje?

Hvala unapred.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

rj444
Radomir Jakovljevic
Beograd

Član broj: 48212
Poruke: 354
*.ETF.BG.AC.YU.



Profil

icon Re: Prelazak s jednog na drugo polje.14.04.2007. u 17:15 - pre 207 meseci
Evo jednog primera:

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
class EnterAsTab extends JFrame
{
  JTextField[] tf = new JTextField[3];
  public EnterAsTab()
  {
    setLocation(300,200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JPanel jp = new JPanel(new GridLayout(5,1));
    for(int x = 0; x < tf.length; x++)
    {
      tf[x] = new JTextField(10);
      jp.add(tf[x]);
      if(x < tf.length-1)
      {
          tf[x].addActionListener(new ActionListener(){
              public void actionPerformed(ActionEvent ae){
                  KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
              }
          });
      }
    }
    jp.add(new JCheckBox("Hello"));
    JButton submitBtn = new JButton("Submit");
    this.getRootPane().setDefaultButton(submitBtn);
    jp.add(submitBtn);
    getContentPane().add(jp);
    pack();
    submitBtn.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent ae){
        System.out.println("Submitted");}});
  }
  public static void main(String args[]){new EnterAsTab().setVisible(true);}
}


Bitan je ovaj deo:

Code:
tf[x].addActionListener(new ActionListener(){
              public void actionPerformed(ActionEvent ae){
                  KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
              }
}
);


ENTER je ActionCommand-a zato smo dodali ActionListener i u njemu obavljamo fokusiranje sledece komponente.
Sledeca komponenta je ona koja je sledeca dodata na roditeljsku komponentu (JPanel jp), tako da ovde imamo da se prvo dodaje tx[0], pa tx[1], pa tx[2].
U tom redosledu ce biti i selektovani.

Ako zelis da imas i SHIFT+ENTER onda mora malo drugacije da se odradi.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Prelazak s jednog na drugo polje.14.04.2007. u 18:01 - pre 207 meseci
@rj444
Code:

 KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();

To je to. E, sad, kako bih mogao odraditi SHIFT + ENTER, polje unazad? Neka kombinacija:
Code:

  KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
     //???
  KeyboardFocusManager.getCurrentKeyboardFocusManager().focusPreviousComponent()    


[Ovu poruku je menjao Miloš Baić dana 14.04.2007. u 19:14 GMT+1]
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

rj444
Radomir Jakovljevic
Beograd

Član broj: 48212
Poruke: 354
*.ETF.BG.AC.YU.



Profil

icon Re: Prelazak s jednog na drugo polje.16.04.2007. u 01:05 - pre 207 meseci
Da samo sto nisam siguran da ce da se desi dogadjaj kada stisnes SHIFT+ENTER koji se ovde desio. Pokusao sam sinocc da to napravim ali nije islo, a nemam sada vremena za to. Pogledaj i procitaj na sun-ovom sajtu u tutorijalima za Javu (nadji na google-u) kako da detektujes da je stisnut SHIFT u dogadjaju koji obradjuje stiskanje ENTER-a i onda iskoristi ove dve funkcije koje si naveo gore.

Pozdrav
 
Odgovor na temu

[es] :: Java :: Prelazak s jednog na drugo polje.

[ Pregleda: 2092 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.