Witam
Mam pytanie jak zrealizować zamianę tekstu w locie przy wykorzystaniu JEditorPane.
Czyli wpisujemy w JEditorPane np. aaa, a program wykrywając tekst aaa zamienia go na bbb.
Reszta tekstu nie może ulec zmianie. Próbowałem na KeyListenerach, ale one wykrywają tylko jeden znak, a nie całe łańcuchy i nawet jakby się to dało zrobić na tych keylistenerach to i tak nie byłoby to zbyt dobre podejście. Proszę o jakiekolwiek pomysły
Pozdrawiam
[Java] Zamiana wpisywanego łańcucha w locie
-
- Sędziwy Jeż
- Posty: 39
- Rejestracja: 22 lis 2010, 17:08
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86
[Java] Zamiana wpisywanego łańcucha w locie
Ostatnio zmieniony 26 lip 2013, 21:32 przez yanan, łącznie zmieniany 1 raz.
- castor_troy
- Przyjaciel
- Posty: 365
- Rejestracja: 07 sty 2008, 20:51
- Płeć: Mężczyzna
- Wersja Ubuntu: 14.04
- Środowisko graficzne: Unity
- Architektura: x86_64
- Lokalizacja: ok. Bielska-Białej
Re: [Java] Zamiana tekstu
Zmień tytuł tematu tak, aby w sposób możliwie precyzyjny przedstawiał sedno sprawy, w której piszesz. Miej na uwadze również zgodność z REGULAMINEM
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.Tytuł tematu zmienisz edytując pierwszy post
Za naciskiem na TREŚCIWY.
- socrates
- Wytworny Kaczor
- Posty: 289
- Rejestracja: 15 maja 2011, 01:00
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86_64
Re: [Java] Zamiana wpisywanego łańcucha w locie
Teoretycznie po 1 znaku powinno wystarczyc chyba ze chcesz sie zabezpieczyc przed kopiuj - wklej to jedynie co mi przychodzi do glowy to napisanie funkcji badajacej kazdy znak i ewentualnej zamianie.
Mnie zawsze wystarczalo sprawdzanie pojedynczego znaku za pomoca KeyTyped
Mnie zawsze wystarczalo sprawdzanie pojedynczego znaku za pomoca KeyTyped
Gentoo + XFCE
-
- Sędziwy Jeż
- Posty: 39
- Rejestracja: 22 lis 2010, 17:08
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86
Re: [Java] Zamiana wpisywanego łańcucha w locie
No właśnie nie wiem czy to jest dobry pomysł. Czuje dużą liczbę if-ów i trudno sobie wyobrazić co się stanie przy dłuższych łańcuchach...
-- 28 lip 2013 12:28 --
Java mnie jednak potrafi zadziwić... Zamianę realizuje jedna linia kodu
Dla przyszłych pokoleń wstawiam jak to zrobiłem:
Dodatkowo musiałem obejść skróty klawiaturowe (automatyczne wcięcia [SHIFT] + komentarze [CTRL + /] + zaznacz wszystko [CTRL + A])
W przykładzie obejście CTRL + A (Zaznacz wszystko) inaczej tekst będzie zaznaczony, ale na krótką chwilę.
Pozdrawiam
-- 28 lip 2013 12:28 --
Java mnie jednak potrafi zadziwić... Zamianę realizuje jedna linia kodu
Dla przyszłych pokoleń wstawiam jak to zrobiłem:
Kod: Zaznacz cały
textPane.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
System.out.println(arg0.getKeyCode());
if (arg0.getKeyCode() == 65) {
if (arg0.isControlDown()) {
textPane.selectAll();
}
}
else{
if (arg0.getKeyCode() != 17) {
textPane.setText(textPane.getText().replaceFirst("aaa", "bbb"));
}
}
}
@Override
public void keyTyped(KeyEvent arg0) {
}
});
W przykładzie obejście CTRL + A (Zaznacz wszystko) inaczej tekst będzie zaznaczony, ale na krótką chwilę.
Pozdrawiam
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 79 gości