Программирование на языке Java


Апплеты - часть 10


isBold, isItalic, isPlain

Эти методы возвращают true в том случае, если стиль шрифта — полужирный (bold), курсив (italic) или обычный (plain), соответственно.

Позиционирование и шрифты: FontMetrics

В Java используются различные шрифты, а класс FontMetrics позволяет программисту точно задавать положение выводимого в апплете текста. Прежде всего нам нужно понять кое-что из обычной терминологии, употребляемой при работе со шрифтами:

  • Высота
  • (height) — размер от верхней до нижней точки самого высокого символа в шрифте.

  • Базовая линия
  • (baseline) — линия, по которой выравниваются нижние границы символов (не считая снижения (descent)).

  • Подъем
  • (ascent) — расстояние от базовой линии до верхней точки символа.

  • Снижение
  • (descent) — расстояние от базовой линии до нижней точки символа.

Использование FontMetrics

Ниже приведены некоторые методы класса FontMetrics:

stringWidth

Этот метод возвращает длину заданной строки для данного шрифта.

bytesWidth, charsWidth

Эти методы возвращают ширину указанного массива байтов для текущего шрифта.

getAscent, getDescent, getHeight

Эти методы возвращают подъем, снижение и ширину шрифта. Сумма подъема и снижения дают полную высоту шрифта. Высота шрифта — это не просто расстояние от самой нижней точки букв g и у до самой верхней точки заглавной буквы Т и символов вроде скобок. Высота включает подчеркивания и т.п.

getMaxAscent и getMaxDescent

Эти методы служат для получения максимальных подъема и снижения всех символов в шрифте.

Центрирование текста

Давайте теперь воспользуемся методами объекта FontMetrics для получения подъема, снижения и длины строки, которую требуется нарисовать, и с помощью полученных значений отцентрируем ее в нашем апплете.

/*

* <applet code="HelloWorld" width=200 height=100>

* </applet>

*

*/

import java.applet.*;

import java.awt.*;

public class HelloWorld extends Applet {

final Font f = new Font("Helvetica", Font.BOLD, 18);

public void paint(Graphics g) {

Dimension d = this.size();

g.setColor(Color.white);

g.fillRect(0,0,d.width,d.height);

g.setColor(Color.black);

g.setFont(f);

drawCenteredString("Hello World!", d.width, d.height, g);

g.drawRect(0,0,d.width-1,d.height-1);

}

public void drawCenteredString(String s, int w, int h, Graphics g) {

FontMetrics fm = g.getFontMetrics();

int x = (w - fm.stringWidth(s)) / 2;

int y = (fm.getAscent() + (h - (fm.getAscent() + fm.getDescent()))/2);

g.drawString(s, x, y);

} }

Вот как выглядит апплет в действии – HelloWorld.html.




- Начало -  - Назад -  - Вперед -