2015-01-12 97 views
0

我使用控制檯在我的應用程序中顯示錯誤和狀態消息。我可以使用複選框顯示並隱藏它,該複選框工作得很好。我現在的問題是,某些行可能很長(例如,如果拋出異常)並且它是最後一行,則插入符號位於非常正確的位置。Java在JTextArea中禁用水平自動滾動

我想禁用水平方向的自動滾動,但保持垂直。另外我不想刪除滾動條並使用換行。我只是想擺脫我的控制檯始終滾動到右側。

我已經嘗試過設置插入位置,但是我無法真正弄清楚我應該這樣做。標記文本時,我的最後一次嘗試導致崩潰,因爲我將代碼放入caretUpdate方法中,這似乎是錯誤的地方。

//Prevent horizontal autoscroll 
textArea.addCaretListener(new CaretListener() { 
    @Override 
    public void caretUpdate(CaretEvent e) { 
    try { 
     textArea.setCaretPosition(textArea.getLineStartOffset(textArea.getLineCount() - 1)); 
    } catch (BadLocationException e1) { 
    e1.printStackTrace(); 
    } 
    } 
}); 
+0

可以追加'\後N'違規記錄? – trashgod

+0

不幸的不是真的,因爲我在大多數情況下只是重定向StdOut和StdErr。在一些我可以,但這隻會部分解決問題,即使它是一個好主意!感謝那 –

回答

0

其實我發現它沒有用,因爲插入符也在我的控制檯類中設置,因此被覆蓋。

對於所有誰感興趣的話,這似乎是一個很好的形式給出了對我說:

textArea.getDocument().addDocumentListener(new DocumentListener() { 
     @Override 
     public void insertUpdate(DocumentEvent e) { 
      try { 
       textArea.setCaretPosition(
        textArea.getLineStartOffset(textArea.getLineCount() - 1) 
       ); 
      } catch (BadLocationException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    }