Как да спрете преоразмеряването на wordwrapped-JTextArea, за да пасне на голямо съдържание?

В момента имам wordwrapped-JTextArea като прозорец за потребителско въвеждане за програма за чат. Как да направя така, че JTextArea да не преоразмерява, за да пасне автоматично на голям текст? Вече съм задал JTextArea да бъде 2 реда:

user_input = new JTextArea();
user_input.addAncestorListener(new RequestFocusListener());
user_input.setRows(2);
user_input.setLineWrap(true);
user_input.setWrapStyleWord(true);

person Fran Fitzpatrick    schedule 28.10.2010    source източник


Отговори (3)


Трябва да поставите своя JTextArea в JScrollPane. Това ще запази размера на реда ви непокътнат и ще има допълнителното предимство да позволи на потребителя да навигира във входа. Ако искате, можете да настроите скролбара никога да не се показва. Все още можете да разчитате на компонента JTextArea, за да изчислите височината на редовете и след това предпочитаната височина на компонента.

Извикването на setRows, което използвате, за да посочите количеството редове, видими на вашия дисплей, е свойство, което се поддържа за работа с JScrollPane, както е описано в JTextArea JavaDoc:

java.awt.TextArea има две свойства редове* и колони, които се използват за определяне на предпочитания размер. JTextArea използва тези свойства, за да посочи предпочитания размер на прозореца за изглед, когато е поставен вътре в JScrollPane, за да съответства на функционалността, предоставена от java.awt.TextArea. JTextArea има предпочитан размер от това, което е необходимо за показване на целия текст, така че да функционира правилно вътре в JScrollPane.

*моето ударение

person akf    schedule 28.10.2010

Използвайте setPreferredSize(new Dimension(...)), така че JTextArea да запази измерението, което сте задали.,

person Jack    schedule 28.10.2010

Това е функция на мениджъра на оформлението, който използвате, но можете да опитате да го принудите, като зададете setPreferredSize() и setMaximusSize() в текстовата си област.

Вижте документите за JComponent.

person zigdon    schedule 28.10.2010