/ / JTextArea преоразмеряване на думата - java, swing, jtextarea, Word-Wrap

JTextArea преоразмеряване на думи - java, swing, jtextarea, word-wrap

Така че, имам JTextArea на JPanel (BoxLayout). Също така имам пълнител Box, който изпълва останалата част от JPanel. Имам нужда от моята JTextArea, за да започнете с single-line-height (мога да управлявам това) и да се разширява и намалявам, когато това е необходимо.

Прехвърлянето на думи е активирано, просто трябва да го настроя на височина, когато се добавя / премахва нов ред.

Опитах с documentListener и getLineCount (), но не разпознава нови редове.

Бих искал да избягвам да бъркам с шрифтовете, ако е възможно.

И, НЕ СВЕТЛИНИ ПАНЕЛИ. От съществено значение е JTextArea да се показва изцяло по всяко време.

Отговори:

13 за отговор № 1

JTextArea има доста специфичен страничен ефект, в дясноУсловия, той може да расте от негово собствено съгласие. Попаднах на това случайно, когато се опитвах да създам прост текстов редактор с две линии (ограничени дължини на символи на ред, с максимум две линии) ...

По принцип, като се има предвид правилния мениджър на оформлението, този компонент може да нарасне от неговото собствено съгласие - всъщност има смисъл, но ме изненада ...

Толкова съм малъкПогледни ме да растем

В допълнение, може да искате да използвате a ComponentListener да следи кога компонентът променя размера си, ако това е "това, което ти се интересува ...

public class TestTextArea extends JFrame {

public TestTextArea() {

setLayout(new GridBagLayout());

JTextArea textArea = new JTextArea();
textArea.setColumns(10);
textArea.setRows(1);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);

add(textArea);

setSize(200, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

textArea.addComponentListener(new ComponentAdapter() {

@Override
public void componentResized(ComponentEvent ce) {

System.out.println("I"ve changed size");

}

});

}


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestTextArea();
}

}