Mam więc JTextArea na JPanel (BoxLayout). Mam też wypełniacz skrzynek, który wypełnia resztę JPanel. Potrzebuję mojego JTextArea, aby rozpocząć z wysokością pojedynczej linii (mogę to zarządzać), i rozwinąć i zredukować, gdy jest to potrzebne.
Zawijanie słów jest włączone, potrzebuję go tylko, aby dostosować jego wysokość po dodaniu / usunięciu nowej linii.
Próbowałem za pomocą documentListener i getLineCount (), ale nie rozpoznaje on nowych wierszy.
Chciałbym uniknąć bałaganu z czcionkami, jeśli to możliwe.
I NIE MA PRZEWIJANIA PRZEWIJANIA. Ważne jest, aby JTextArea była wyświetlana w pełni przez cały czas.
Odpowiedzi:
13 dla odpowiedzi nr 1JTextArea
ma raczej szczególny efekt uboczny, po prawejwarunki, może rosnąć z własnej woli. Natknąłem się na to przypadkiem, kiedy próbowałem skonfigurować prosty dwuliniowy edytor tekstu (ograniczona długość znaków w wierszu, z maksymalnie dwiema liniami) ...
Zasadniczo, biorąc pod uwagę odpowiedni menedżer layoutu, ten komponent może rosnąć z własnej woli - faktycznie ma to sens, ale zaskoczył mnie ...
Teraz możesz użyć a ComponentListener
aby monitorować, kiedy komponent zmienia rozmiar, jeśli to jest to, co Cię interesuje ...
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();
}
}