360
361 /**
362 * Releases a given key.
363 * <p>
364 * Key codes that have more than one physical key associated with them
365 * (e.g. {@code KeyEvent.VK_SHIFT} could mean either the
366 * left or right shift key) will map to the left key.
367 *
368 * @param keycode Key to release (e.g. {@code KeyEvent.VK_A})
369 * @throws IllegalArgumentException if {@code keycode} is not a
370 * valid key
371 * @see #keyPress(int)
372 * @see java.awt.event.KeyEvent
373 */
374 public synchronized void keyRelease(int keycode) {
375 checkKeycodeArgument(keycode);
376 peer.keyRelease(keycode);
377 afterEvent();
378 }
379
380 private void checkKeycodeArgument(int keycode) {
381 // rather than build a big table or switch statement here, we'll
382 // just check that the key isn't VK_UNDEFINED and assume that the
383 // peer implementations will throw an exception for other bogus
384 // values e.g. -1, 999999
385 if (keycode == KeyEvent.VK_UNDEFINED) {
386 throw new IllegalArgumentException("Invalid key code");
387 }
388 }
389
390 /**
391 * Returns the color of a pixel at the given screen coordinates.
392 * @param x X position of pixel
393 * @param y Y position of pixel
394 * @return Color of the pixel
395 */
396 public synchronized Color getPixelColor(int x, int y) {
397 AffineTransform tx = GraphicsEnvironment.
398 getLocalGraphicsEnvironment().getDefaultScreenDevice().
399 getDefaultConfiguration().getDefaultTransform();
|
360
361 /**
362 * Releases a given key.
363 * <p>
364 * Key codes that have more than one physical key associated with them
365 * (e.g. {@code KeyEvent.VK_SHIFT} could mean either the
366 * left or right shift key) will map to the left key.
367 *
368 * @param keycode Key to release (e.g. {@code KeyEvent.VK_A})
369 * @throws IllegalArgumentException if {@code keycode} is not a
370 * valid key
371 * @see #keyPress(int)
372 * @see java.awt.event.KeyEvent
373 */
374 public synchronized void keyRelease(int keycode) {
375 checkKeycodeArgument(keycode);
376 peer.keyRelease(keycode);
377 afterEvent();
378 }
379
380 /**
381 * Presses a given unicode key. The key should be released using the
382 * {@code keyReleaseUnicode} method.
383 * <p>
384 *
385 * @param key unicode to press
386 * @throws IllegalArgumentException if {@code key} is not
387 * a valid unicode key
388 * @see #keyReleaseUnicode(int)
389 * @see java.awt.event.KeyEvent
390 */
391 public synchronized void keyPressUnicode(int key) {
392 checkKeycodeArgument(key);
393 peer.keyPressUnicode(key);
394 afterEvent();
395 }
396
397 /**
398 * Releases a given unicode key.
399 * <p>
400 *
401 * @param key unicode to release
402 * @throws IllegalArgumentException if {@code key} is not a
403 * valid key
404 * @see #keyPressUnicode(int)
405 * @see java.awt.event.KeyEvent
406 */
407 public synchronized void keyReleaseUnicode(int key) {
408 checkKeycodeArgument(key);
409 peer.keyReleaseUnicode(key);
410 afterEvent();
411 }
412
413 private void checkKeycodeArgument(int keycode) {
414 // rather than build a big table or switch statement here, we'll
415 // just check that the key isn't VK_UNDEFINED and assume that the
416 // peer implementations will throw an exception for other bogus
417 // values e.g. -1, 999999
418 if (keycode == KeyEvent.VK_UNDEFINED) {
419 throw new IllegalArgumentException("Invalid key code");
420 }
421 }
422
423 /**
424 * Returns the color of a pixel at the given screen coordinates.
425 * @param x X position of pixel
426 * @param y Y position of pixel
427 * @return Color of the pixel
428 */
429 public synchronized Color getPixelColor(int x, int y) {
430 AffineTransform tx = GraphicsEnvironment.
431 getLocalGraphicsEnvironment().getDefaultScreenDevice().
432 getDefaultConfiguration().getDefaultTransform();
|