Иллюстрированный самоучитель по Java


         

Для редактирования текста необходимо отслеживать


Для редактирования текста необходимо отслеживать курсором (caret) текущую позицию в тексте. Это осуществляется методами класса TextHitinfo, а методы класса TextLayout позволяют получить позицию курсора, выделить блок текста" и подсветить его.
Наконец, можно задать отдельные правила для вывода каждого символа текста. Для этого надо получить экземпляр класса Glyphvector методом createGiyphvector () класса Font, изменить позицию символа методом setciyphPosition(), задать преобразование символа, если это допустимо для данного шрифта, методом setciyphTransformo, и вывести измененный текст методом drawGiyphVector () класса Graphics2D. Все это показано в листинге 9.7 и на рис. 9.7 — выводе программы листинга 9.7.


Рис. 9.7.
Вывод отдельных  символов

Листинг 9.7.
Вывод отдельных символов
import j ava.awt.*;
import Java.awt.font.*;
import java.awt.geom.*;
import j ava.awt.event.*;
class GlyphTest extends Frame{ GlyphTest(String s){ super(s) ;
setSize(400, 150); 
setVisible(true); 
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0); 
}
}); 
}
public void paint(Graphics gr){ 
int h = 5;
Graphics2D g = (Graphics2D)gr;
FontRenderContext frc = g.getFontRenderContext(); 
Font f = new Font("Serif", Font.BOLD, 30);
GlyphVector gv = f.createGiyphvector(frc, "Пляшущий текст"); 
int len = gv.getNumGlyphs(); 
for (int i = 0; i < len; i++){
Point2D.Double p = new Point2D.Double(25 * i, h = -h); 
gv.setGlyphPosition(i, p) ; 
}
g.drawGiyphVector(gv, 10, 100); } 
public static void main(String[] args)(
new GlyphTest(" Вывод отдельных символов"); 

}

Содержание  Назад  Вперед