2016-06-29 3 views
1

У меня есть JTabbedPane с компонентами JTextAreas. С помощью другого метода я добавляю Texts в текст. Но если TextArea заполнен, он не прокручивается вниз, поэтому я не вижу последних текстов. Как я могу это решить?JTabbedPane с JTextAreas. Автоматически прокручивать вниз

public class View extends JFrame{ 

    public class Field extends JTextArea{ 
    public Field(){ 
     this.setEditable(false); 
     this.setLineWrap(true); 
     DefaultCaret caret = (DefaultCaret)this.getCaret(); 
     caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); 
    } 

} 

    public View(){ 


    this.setLayout(new BorderLayout()); 
    this.tabs = new JTabbedPane(); 
    this.tabs.add("abc", new Field()); 

    this.add(tabs, BorderLayout.CENTER); 

} 
} 

ответ

2

Вы должны положить JTextArea внутри JScrollPane, чтобы сделать его прокручивать:

import javax.swing.*; 
import javax.swing.text.DefaultCaret; 
import java.awt.*; 

public class Example { 

    public static void main(String[] args) { 

     JFrame jFrame = new JFrame(); 

     JTextArea textArea = new JTextArea(); 
     DefaultCaret caret = (DefaultCaret)textArea.getCaret(); 
     caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); 

     JScrollPane jScrollPane = new JScrollPane(textArea); 
     jScrollPane.setPreferredSize(new Dimension(300, 300)); 

     JTabbedPane tabbedPane = new JTabbedPane(); 
     tabbedPane.addTab("abc", jScrollPane); 

     jFrame.setContentPane(tabbedPane); 

     jFrame.pack(); 
     jFrame.setVisible(true); 

     for(int i = 0; i < 100; i ++) { 
      textArea.append(i + "\n"); 
     } 
    } 
} 
+0

Спасибо. Но если я добавлю scrollPane в свой код, ничего не изменится. Я не могу увидеть scrollPane. Возможно ли, что проблема создана BorderLayout? Поскольку TextArea также не имеет размер, который я ему задал – Alex

+0

С настройкой OP для политики каретки на ALWAYS_UPDATE вызов setCaretPosition не нужен. И если вы используете другую политику обновлений, вызов setCaretPosition должен выполняться один раз, после цикла, – FredK

+0

@FredK Вы правы, исправлены. – explv

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