2013-11-22 2 views
-1

У меня есть JtextArea, в которой я должен добавить текст, и я хочу, чтобы он прокручивался вниз при добавлении нового текста. Я сделал следующее, но это не сработает.Как прокручивать в JTextArea

showFrame = new JFrame("Gui Console"); 


    showArea = new JTextArea(); 

     showArea.setBorder(new TitledBorder("Console")); 
     showArea.setPreferredSize(new Dimension(500, 400)); 
     showArea.setMinimumSize(new Dimension(500, 400)); 
     showArea.setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE)); 
     showArea.getDocument().addDocumentListener(new DocumentListener() { 

      public void insertUpdate(DocumentEvent e) { 
       JScrollBar vertical = scrollPane.getVerticalScrollBar(); 
       scrollPane.getVerticalScrollBar().setValue(vertical.getMaximum());; 

      } 

      public void removeUpdate(DocumentEvent e) { 

      } 

      public void changedUpdate(DocumentEvent e) { 

      } 

     }); 

Единственный способ, который работает, чтобы установить

showArea.setPreferredSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE)); 

но окно становится слишком большим, и я не хочу.

+2

http://stackoverflow.com/questions/1627028/how- to-set-auto-scrolling-of-jtextarea-in-java-gui – kiheru

+0

Не используйте ни один из методов setPreferred/Minimum/Maximum. Текстовая область автоматически пересчитывает предпочтительный размер при добавлении текста. – camickr

ответ

0

попробовать это ...

JScrollPane scrollPane = new JScrollPane(showArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
scrollPane.setPreferredSize(new Dimension(500, 400)); 
add(scrollPane); 

это может помочь вам. и scrollPane добавляется с JFrame или JPanel. нет необходимости showArea

1
DefaultCaret caret = (DefaultCaret)yourTextArea.getCaret(); 
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); 
0

Вам просто нужно положить JTextArea в JScrollPane

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

public class Test extends JFrame { 

    public Test() { 
     super("Test"); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     JTextArea text = new JTextArea(5,20); 
     text.setWrapStyleWord(true); 
     text.setLineWrap(true); 

     JScrollPane jsp = new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 

     add(jsp); 

     pack(); 

     setVisible(true); 

    } 

    public static void main(String[] args) { 

     new Test(); 

    } 

} 

Надежда, что помогает, Салам

Смежные вопросы