Многоредов етикет/област/панел в Java с оправдан текст [затворен]

Имам интересна задача. Помислете за String contentс неизвестна дължина. Бих искал да покажа content с Font font с Justified текст. Трябва да знам какво height ще заеме това, ако посоча width. Искам да покажа този текст в средата на екрана, но трябва да има ширина width.

Следователно бих искал да направя нещо като следното.

//create a JTextPane or JTextArea
pane.setText(content);
pane.setFont(font);
//set the width of the pane here
//get the height of the full text block if its justified
pane.setLocation(screenWidth/2 - width/2, screenHeight/2, height/2);

Как мога да направя това?


person CodeGuy    schedule 31.12.2012    source източник
comment
Обосновано: Ляво? нали център? Попълнете? Вижте също този Въпроси и отговори на TextLayout.   -  person trashgod    schedule 31.12.2012
comment
Вижте en.wikipedia.org/wiki/Justification_(typesetting), за да научите какво е Justified текстът е.   -  person CodeGuy    schedule 31.12.2012
comment
Уточнявате ли ширината? Изглежда, че трябва да изчислите ширината въз основа на размера на шрифта и String за показване.   -  person Thorn    schedule 31.12.2012
comment
Уточнявам ширината и трябва да определя височината.   -  person CodeGuy    schedule 31.12.2012
comment
en.wikipedia.org/wiki/Justification_(typesetting)   -  person CodeGuy    schedule 31.12.2012
comment
по подразбиране JLabel.setText("<html><p style='text-align:justify'> + your text here + </html>"), същото / подобно на JTextPane/Editor, нямам идея как да определя numbers of rows за JLabel, JTextPane/Editor връща това по подразбиране, нямам представа къде е проблемът ви   -  person mKorbel    schedule 31.12.2012
comment
тогава можеш ли да попълниш кода, който ми липсва? Не следя напълно какво казваш. имайте предвид, че се опитвам да използвам конкретен шрифт.   -  person CodeGuy    schedule 01.01.2013
comment
Сигурен съм, че това трябва да бъде разрешено от (@StanislavL) или (@Andrew Thompson)) няколко пъти тук   -  person mKorbel    schedule 01.01.2013
comment
@mKorbel Благодаря за похвалите, но защо изтрихте вашият отговор? Струва ми се, че вашето предложение за style='text-align:justify' постига идеално заявената цел.   -  person Andrew Thompson    schedule 01.01.2013


Отговори (1)


Обикновено обосновката се прави по обратния начин.

Текстът има фиксирана височина и вие регулирате ширината на текста по един от следните начини:

  • Добавете интервали между думите. По-лесно, но не е привлекателно визуално.
  • Добавете интервал между буквите. Това се нарича кернинг.

Ако регулирате височината така, че ширината да е правилна, всеки ред във вашия текст ще има различна височина.

person Gilbert Le Blanc    schedule 31.12.2012