[Java] Zamiana wpisywanego łańcucha w locie

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
yanan
Sędziwy Jeż
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

Post autor: yanan » 25 lip 2013, 15:27

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
Ostatnio zmieniony 26 lip 2013, 21:32 przez yanan, łącznie zmieniany 1 raz.
Awatar użytkownika
castor_troy
Przyjaciel
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

Post autor: castor_troy » 26 lip 2013, 20:51

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ł.


Za naciskiem na TREŚCIWY.
Awatar użytkownika
socrates
Wytworny Kaczor
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

Post autor: socrates » 26 lip 2013, 21:47

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
Gentoo + XFCE
yanan
Sędziwy Jeż
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

Post autor: yanan » 27 lip 2013, 14:35

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:

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) {
				
			}
        	
        });
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
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości