Takže mám JTextArea na JPanel (BoxLayout). Mám tiež vyplňovač škatule, ktorý vyplní zvyšok JPanelu. Potrebujem, aby moje zariadenie JTextArea začalo s výškou jedného riadku (to môžem zvládnuť) a aby sa podľa potreby rozširovalo a zmenšovalo.
Zalomenie slov je povolené, len ho potrebujem na úpravu výšky, keď sa pridá alebo odstráni nový riadok.
Snažil som sa s documentListener a getLineCount (), ale nerozpoznal wordwrap-newlines.
Ak je to možné, rád by som sa vyhýbal písaniu správ o písmo.
A ŽIADNE SKLÁDACIE PANELY. Je nevyhnutné, aby sa JTextArea vždy zobrazoval úplne.
odpovede:
13 pre odpoveď č. 1JTextArea
má skôr pravý vedľajší účinokpodmienky, z ktorých to môže rásť samé. Narazil som na to náhodou, keď som sa snažil nastaviť jednoduchý dvojriadkový textový editor (dĺžka obmedzených znakov na riadok, s maximálne dvoma riadkami) ...
V podstate, vzhľadom na správcu usporiadania rozloženia, táto zložka môže rásť sama osebe - skutočne to dáva zmysel, ale prekvapilo ma to ...
Teraz môžete tiež použiť a ComponentListener
sledovať, kedy sa komponent mení veľkosť, či je to to, čo vás zaujíma ...
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();
}
}