package elte.java2_utikalauz5.java2d; import java.awt.*; import java.awt.font.*; import java.awt.event.*; /** peldaprogram a kurzorok kezelesere es egerrel valo mozgatasukra. @link.forrásfájl {@docRoot}/../data/java2d/src TalalatKezeles.java @link.letöltés {@docRoot}/../data/java2d TalalatKezeles.jar @since Java 2 Útikalauz programozóknak */ class TalalatKezeles extends Canvas implements MouseListener { /** Verziószám */ private final static long serialVersionUID = 15L; int x, y, oldx, oldy; // a kurzor regi es uj helye public void TalalatKezeles () { x = y = oldx = oldy = 0; } public void mouseClicked (MouseEvent e) { oldx = x; oldy = y; x = e.getX (); y = e.getY (); repaint (); } public void mouseEntered (MouseEvent e) { } public void mouseExited (MouseEvent e) { } public void mousePressed (MouseEvent e) { } public void mouseReleased (MouseEvent e) { } public void update (Graphics g) { paint (g); } public void initScreen () { Frame f = new Frame (); f.add (this); addMouseListener (this); f.addWindowListener ( new WindowAdapter () { public void windowClosing (WindowEvent e) { System.exit (0); } } ); f.setSize (500, 200); f.setVisible (true); } public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; FontRenderContext frc = g2.getFontRenderContext (); Font betutipus = new Font ("Times New Roman", Font.BOLD, 12); String szoveg = new String ("Ez a szoveg 12 pontos, kover Times New Roman betutipussal irodott."); TextLayout megjelenito = new TextLayout (szoveg, betutipus, frc); // a kurzor regi poziciojat kerjuk le TextHitInfo talalat = megjelenito.hitTestChar (oldx, oldy); int szovegIndex = talalat.getInsertionIndex (); // a regi kurzort toroljuk (feher szinnel rajzoljuk ki) Shape[] kurzorok = megjelenito.getCaretShapes (szovegIndex); g2.setColor (Color.white); g2.translate (0, 100); g2.draw (kurzorok[0]); g2.translate (0, -100); if (kurzorok[1] != null) { g2.setColor (Color.white); g2.translate (0, 100); g2.draw (kurzorok[1]); g2.translate (0, -100); } // a kurzor uj poziciojat kerjuk le talalat = megjelenito.hitTestChar (x, y); szovegIndex = talalat.getInsertionIndex (); // a kurzort az uj helyen megjelenitjuk kurzorok = megjelenito.getCaretShapes (szovegIndex); g2.setColor (Color.red); g2.translate (0, 100); g2.draw (kurzorok[0]); g2.translate (0, -100); if (kurzorok[1] != null) { g2.setColor (Color.green); g2.translate (0, 100); g2.draw (kurzorok[1]); g2.translate (0, -100); } // megjelenitjuk a szoveget g2.setColor (Color.blue); megjelenito.draw (g2, 0, 100); } public static void main (String[] args) { TalalatKezeles sz = new TalalatKezeles (); sz.initScreen (); } }