Kasowanie wybranego słowa w JTextField

0

Dzień dobry,
W związku z tym że to moje początki w Javie, a mam pewien program do napisania, taki do nabrania rozpędu, to chciałbym zadać dwa pytania. Mam JTextField, użytkownik wpisuje tekst, w momencie gdy wpisze określone słowo, powinien pojawić się komunikat, a następnie po kilku sekundach to słowo powinno zmienić kolor. Teraz tak, problem jest z zaznaczeniem właśnie tego wybranego słowa, chciałbym o jakąś radę czego użyć, ponieważ nie mam na to pomysłu. A co do czekania, to jakiej funkcji najlepiej użyć?
Pozdrawiam

1

setSelectionStart, setSelectionEnd i Timer.
W JTextField nie możesz dowolnie kolorować części tekstu. Odróżnia się wizualnie tylko fragment, który jest selected. Jeśli chcesz dowolnie kolorować, to użyj innego komponentu, np. JTextPane.

0

Ok, wybieranie słowa już mam, tylko teraz rodzi się kolejne pytanie, chciałbym żeby wybierane były też słowa odmieniane, jak również pisane z wielkich liter. Mam np. czerwień, a w bazie słów czerw, da się tak zrobić żeby czerwień została zaznaczona?

1

Da się, metody contains i toLowerCase.

0

Ok, tylko teraz jak zrobić że jeśli w swoim słowniku mam czerw, to żeby zaznaczyło całe słowo czerwień? Obecnie robie to tak:

int a=0;
        for (int i = 0; i < lista.size(); i++) {
            if(tekst.toLowerCase().contains(lista.get(i)))
            {
                a=lista.get(i).length();
            }
        }
        return a;

Słownik mam w liście. Ale teraz brane jest tylko pod uwagę słowo czerw a nie czerwień

1

Wstawiaj kod w znaczniki <code class="java"></code>.
Wpierw musisz tekst podzielić na słowa , potem sprawdzać

if(word.toLowerCase().contains(lista.get(i)))

i zaznaczać cały word.

0

Co do wstawiania kodu to się poprawię ;) A jakaś podpowiedź jak podzielić tekst na słowa? Zaznaczam że program sprawdza słowo po każdym naciśnięciu spacji. Więc nie jest tak że po wpisaniu całego tekstu dopiero jest to sprawdzane.

1
String word = "To jest tekst";
String[] splitter = word.split(" ");
String result = splitter[0] + " " + splitter[1] + " " + splitter[2];

To podzieli Ci tekst na słowa, przerwami w tym przypadku muszą być spacje.

0

Ok, wszystko ładnie działa, zaznacza się to co trzeba, teraz ostatnia sprawa, pod textField mam JLabel która na początku jest pusta, w momencie gdy zostanie wpisane dane słowo chcę aby pokazał się w niej jakiś tekst i po 3 sekundach zniknął, jak to ugryźć? Timerem?

1

Timer jest dobrym rozwiązaniem.

0

A jakas mała podpowiedź jak tego użyć? Czytalem trochę ale nie potrafię tego zaimplementowac w moim programie

1

Są dwie odpowiednie klasy Timer: java.util.Timer oraz javax.swing.Timer. Kod jest dla java.util.Timer

Timer = new Timer();
timer.schedule(new ChangeLabel(),3000);
class ChangeLabel extends TimerTask{
    public void run(){
        label.setText("");
    }
}
0

Ok, dzięki wielkie, działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1