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

Kako da pauziram while loop?

[es] :: Java :: Kako da pauziram while loop?

[ Pregleda: 313 | Odgovora: 1 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LightBow
London

Član broj: 4829
Poruke: 156
89.240.45.*



Profil

icon Kako da pauziram while loop?31.12.2007. u 07:52

Napravio sam jedan text editor i implementirao search koristeci while loop. Svaki ciklus loopa pronadje zadani string (ako postoji) i markira ga, zatim trazi sledecu instancu tog stringa dalje u textu i markira ga (s tim sto demarkira prethodni) itd sve dok dodje do poslednje instance. Sve to lepo radi kako sam zamislio, i samo sam jos hteo da dodam prekid loopa posle svakog ciklusa, da bi korisnik pritiskom na neki taster (f3 npr) nastavio po zelji da trazi sledeci match.
Medjutim to se ispostavilo komplikovano, tj. nisam nista osmislio niti nasao na netu.
Da li ima neka jednostavna naredba koja ce da pauzira loop. Najzgodnije bi bilo nesto kao getch() u C++, koje zaustavlja program i ceka da korisnik tipne nesto. Evo kako loop izgleda:
Code:
public void find()
     {
       String word;
        String text = textArea.getText();
        int initialTextLength = text.length();
       word = JOptionPane.showInputDialog("Find what: ");

          if(word != null)
          {
              int addPosition = 0;
            int start = text.indexOf(word);//
            while (start != -1)//means word not found
             {
               
            start += addPosition;
            int end = start + word.length();//This determines the end of the selection
            textArea.select(start, end);
             text = text.substring(end - addPosition, text.length());
              addPosition = initialTextLength - text.length();
                          
             start = text.indexOf(word) ;
             
             
          }
            }
        
     }
Zahvaljujem na svakoj pomoci
31.12.2007. u 07:52 

GxRxN

Član broj: 118184
Poruke: 25
*.eunet.yu.



Profil

icon Re: Kako da pauziram while loop?01.01.2008. u 16:13
Swing ima specificnu arhitekturu, i ukoliko find() metodu pozivas iz event-dispatch thread-a, ceo GUI ti je zaledjen dok se ona ne izvrsi. Iz dela koda koji si post-ovao, ne mogu da vidim da li je to kod tebe slucaj.

Problem sa search-om mozes resiti na drugi nacin - pravljenjem klase koja je izvedena iz JTextArea:
Code:

import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
/**
 * SearchTextArea extends JTextArea and implements basic search capability.
 */
public class SearchTextArea extends JTextArea{
    private String searchWord;
    
    public SearchTextArea() {
        this.setSearchWord("nadjime");
        this.setText("nadimenadjmeadjgimenafghnajnadjimeimenaenajime");
        this.setCaretPosition(0);
        this.registerKeyboardAction(new SearchAction(), 
                KeyStroke.getKeyStroke("F3"), this.WHEN_FOCUSED);
    }
    
    public String getSearchWord() {
        return searchWord;
    }
    
    public void setSearchWord(String word) {
        this.searchWord = word;
    }
    
    private class SearchAction extends AbstractAction {
        public void actionPerformed(ActionEvent e) {
            SearchTextArea x=(SearchTextArea)e.getSource();
            int start=x.getText().indexOf(searchWord, x.getCaretPosition());
            if(start!=-1){
               int end=start+searchWord.length();
                x.setCaretPosition(start);
                x.moveCaretPosition(end);
            }
        }       
    }
    
}


01.01.2008. u 16:13 

[es] :: Java :: Kako da pauziram while loop?

[ Pregleda: 313 | Odgovora: 1 ]

Postavi temu Odgovori

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