2016-06-29 9 views
1

コンポーネントとしてJTextAreasを持つJTabbedPaneがあります。別の方法では、TextAreasにテキストを追加します。 TextAreaがいっぱいであればスクロールダウンしないので、最新のテキストを見ることはできません。これをどうすれば解決できますか?JTextAreasを使用したJTabbedPane。自動スクロール

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

あなたはそれをスクロール可能にするために、あなたのJTextAreaJScrollPaneの内側に配置する必要があります。

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を見ることができません。問題はBorderLayoutによって作成される可能性はありますか? TextAreaにも設定されているサイズがないため、 – Alex

+0

OPのキャレットポリシーの設定をALWAYS_UPDATEに設定すると、setCaretPositionの呼び出しは必要ありません。また、別の更新ポリシーを使用している場合、setCaretPositionの呼び出しは、ループの後に一度行う必要があります。 – FredK

+0

@FredKあなたは正しいです。 – explv

関連する問題