Така че, имам JTextArea на JPanel (BoxLayout). Също така имам пълнител Box, който изпълва останалата част от JPanel. Имам нужда от моята JTextArea, за да започнете с single-line-height (мога да управлявам това) и да се разширява и намалявам, когато това е необходимо.
Прехвърлянето на думи е активирано, просто трябва да го настроя на височина, когато се добавя / премахва нов ред.
Опитах с documentListener и getLineCount (), но не разпознава нови редове.
Бих искал да избягвам да бъркам с шрифтовете, ако е възможно.
И, НЕ СВЕТЛИНИ ПАНЕЛИ. От съществено значение е JTextArea да се показва изцяло по всяко време.
Отговори:
13 за отговор № 1JTextArea
има доста специфичен страничен ефект, в дясноУсловия, той може да расте от негово собствено съгласие. Попаднах на това случайно, когато се опитвах да създам прост текстов редактор с две линии (ограничени дължини на символи на ред, с максимум две линии) ...
По принцип, като се има предвид правилния мениджър на оформлението, този компонент може да нарасне от неговото собствено съгласие - всъщност има смисъл, но ме изненада ...
В допълнение, може да искате да използвате 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();
}
}