Как разместить текст TextArea в его центре?
У меня есть диалог и TextArea
, TextArea
Компонент имеет выравнивание, установленное на Component.CENTER
, Я создал метод с именем affiche()
который отображает диалог:
public class Alert extends Dialog {
private TextArea chp;
private Command[] comms;
public Alert(String text, Command[] comms)
{
super();
this.comms = comms;
setAutoDispose(true);
for (int c=0; c<comms.length; c++)
addCommand(comms[c]);
chp = new TextArea(text);
chp.setAlignment(Component.CENTER);
chp.setEditable(false);
chp.getSelectedStyle().setBorder(null);
chp.getUnselectedStyle().setBorder(null);
chp.getSelectedStyle().setBgColor(this.getStyle().getBgColor());
chp.getUnselectedStyle().setBgColor(this.getStyle().getBgColor());
chp.setRowsGap(3);
}
public Command affiche()
{
return show(null, chp, comms);
}
}
Моя проблема в том, что текст отображается в верхней части TextArea
при вызове affiche()
метод из другой формы.
Итак, как отобразить текст в центре TextArea
? Под "центром" я подразумеваю центр по ширине и центр по высоте. Я уже установил горизонтальное выравнивание по центру по коду chp.setAlignment(Component.CENTER);
, поэтому я хочу знать, как установить вертикальное выравнивание?
2 ответа
Я нашел решение без использования класса DefaultLookAndFeel. Вот:
public class Alert extends Dialog {
private TextArea chp;
private Command[] comms;
public Alert(String text, Command[] comms)
{
super();
this.comms = comms;
setAutoDispose(true);
for (int c=0; c<comms.length; c++)
addCommand(comms[c]);
chp = new TextArea();
chp.setAlignment(Component.CENTER);
chp.setEditable(false);
chp.getSelectedStyle().setBorder(null);
chp.getUnselectedStyle().setBorder(null);
chp.getSelectedStyle().setBgColor(this.getStyle().getBgColor());
chp.getUnselectedStyle().setBgColor(this.getStyle().getBgColor());
while (text.substring(0, (text.length()/2)+1).length() < chp.getMaxSize()/2)
{
text = " ".concat(text);
}
chp.setText(text);
}
public Command affiche()
{
return show(null, chp, comms);
}
}
Так что я просто добавил while
код. И это работает!
Мой предыдущий ответ был неправильным, я забыл, что мы сделали сейчас...
TextArea поддерживает выравнивание по центру, несмотря на то, что недокументированное просто устанавливает стиль выравнивания по центру, и это будет работать из коробки.