Reprezentacja kropki i małpy w KeyEvent

0

Chciałbym napisać program który wpisze mój adres email w zaznaczone pole tekstowe. potrzebuje do tego reprezentacje klawisza . oraz @
w dokumentacji znalazłem tylko KeyEvent.VK_AT, oraz KeyEvent.VK_DEAD_ABOVEDOT,
ale one generują błąd Invalid key code
at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Unknown Source)

przy okazji chciałbym aby wciśnięte zostało duże G coś typu KeyEvent.VK_G+KeyEvent.VK_SHIFT jak to wykonać?

0

Kropka to KeyEvent.VK_PERIOD. Nie możesz tego adresu wpisać normalnie metodą setText?
Jeżeli chcesz wpisywać efektownie, to wykorzystaj takie połączenie Timera i Robota.

        timer = new Timer(100,new ActionListener()
        {
            String address = "www.google.com";
            int size = 1;
            //----------------
            public void actionPerformed(ActionEvent ae)
            {
                if(size == address.length() + 1)
                {
                    timer.stop();
                    try
                    {
                        host.requestFocus();
                        Robot robot = new Robot();
                        robot.keyPress(KeyEvent.VK_ENTER);
                        robot.keyRelease(KeyEvent.VK_ENTER);
                    }
                    catch(Exception e)
                    {                        
                    }
                    return;
                }
                host.setText(address.substring(0,size));
                NazwaKlasy.this.repaint();
                size++;
            }
        });
        ...
        timer.start();
0

U Ciebie host jest TextFieldem?
ja raczej myślałem o czymś takim, że uruchamiam program mam tam np. 2s na ustawienie kursora w wybrane miejsce i wtedy zaczyna pisać(np. w formularzu logowania na forum).

Przy okazji zapytam, znasz może jakąś ciekawą biblioteczkę która pomoże mi zrobić prymitywny odtwarzacz audio?

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class Gmail {
	Robot robot;

	public Gmail() {
		try {
			robot = new Robot();
		} catch (AWTException e) {
			System.err.println("błąd");
			e.printStackTrace();
		}
	}

	public void printText() {

		int[] text = {
				KeyEvent.VK_J,
				KeyEvent.VK_A,
				KeyEvent.VK_C,
				KeyEvent.VK_E,
				KeyEvent.VK_K

		};

		for (int i = 0; i < text.length; i++) {
			robot.keyPress(text[i]);
			robot.delay(50);
		}
	}

	public static void main(String[] args) {
		Gmail test = new Gmail();
		test.robot.delay(1500);
		test.printText();

	}

}
0

Tak, host to JTextField. Timer dopisuje w pętli litery, widać efekt wydłużającego się napisu (w Twoim programiku nie widać). Robot tylko naciska Enter na końcu inicjując wykonanie akcji - do pola host jest podpięty ActionListener.
Nie korzystałem z żadnej zewnętrznej biblioteki dźwiękowej, nie potrafię ich ocenić. Wpisz w google java sound library, poczytaj i wybierz.

0

Widać tylko że robot.delay(50) wykonuje to bardzo szybko- tak szybko ze czasem jak się mrugnie to już cały napis się pojawi. robot.delay(100); myślę, że rozwiązuje problem.
Dzięki za pomoc

0

Mylisz się, żaden czas nie rozwiązuje problemu. Napis jacek pojawia się od razu cały (tylko później).

0

U mnie pojawia się literka po literce

0

Jaka Java, jaki SO, jak uruchamiasz (w konsoli czy w IDE)?
W Eclipse rzeczywiście pojawia się po literce, ale Eclipse (IDE) nie służy do uruchamiania programów Javy. Każdy potencjalny użytkownik ma sobie instalować Eclipse i go odpalać przed uruchomieniem Twojego programu?

0

początkowo rzeczywiście uruchamiałem w eclipsie, ale twój komentarz dał mi do myślenia więc stworzyłem wykonywalny jar i nadal jacek jest wypisywane literka po literce. java zapewne najnowsza(tydzień temu komputer formatowałem). java 101, eclipse neon, w7

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