Поворот текста на 90
От: Zatrass Россия  
Дата: 15.12.09 06:16
Оценка:
Повернул текст следующим кодом:

JLabel lblNewLabel = new JLabel("New label");
lblNewLabel.setBounds(66, 54, 74, 212);
lblNewLabel.setBorder(new LineBorder(new Color(0, 0, 0)));
lblNewLabel.setVerticalTextPosition(SwingConstants.CENTER);
lblNewLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
lblNewLabel.setHorizontalTextPosition(SwingConstants.CENTER);
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
        
Font f = new Font("Dialog", Font.BOLD | Font.ITALIC, 13);
f = f.deriveFont(AffineTransform.getRotateInstance(Math.PI/2));


текст начинается с середины (по вертикали), т.е. "N" в середине, а остальной текст — ниже. Как выравнять его?
Пробовал подогнать через
getRotateInstance(double theta, double anchorx, double anchory)


Но тут каждую надпись (например не "New label", а "zzZZzz" приходится подгонять индивидуально через double anchorx, double anchory, а как их вычислить для текста — не врубаюсь.

Если выставить под 45 через Math.PI/4 — все равно "N" в надписи "New label" расположена в середине по вертикали.
java jlabel swing
Re: Поворот текста на 90
От: and_hom  
Дата: 15.12.09 07:32
Оценка:
> f = f.deriveFont(AffineTransform.getRotateInstance(Math.PI/2));

AffineTransform tx = new AffineTransform();
tx.rotate(Math.PI);
tx.translate(-w/2,-h/2);


где w — длина строки в пикселах
как её вычислять, я сходу не помню, но точно это делал
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Поворот текста на 90
От: Zatrass Россия  
Дата: 15.12.09 08:17
Оценка:
Здравствуйте, and_hom, Вы писали:

где w — длина строки в пикселах
как её вычислять, я сходу не помню, но точно это делал



Font f = new Font("Dialog", Font.BOLD | Font.ITALIC, 13);
int i = getFontMetrics(f).stringWidth("Строка")


Спасибо! Помогло!
Re: Поворот текста на 90
От: Blazkowicz Россия  
Дата: 15.12.09 09:35
Оценка:
Здравствуйте, Zatrass, Вы писали:

Z>Повернул текст следующим кодом:

Посмотри ещё GlyphVector
http://img.meta.ua/rsdnsearch/?q=GlyphVector&mode=rank&group=N&group=10
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.