簡體   English   中英

Java在JTextArea中禁用水平自動滾動

[英]Java disable horizontal autoscroll in JTextArea

我使用控制台在應用程序中顯示錯誤和狀態消息。 我可以使用復選框顯示和隱藏它,效果很好。 我現在的問題是,某些行可能會很長(例如,如果引發Exception),並且如果這是最后一行,則插入號位於正確的位置。

我想禁用水平方向的自動滾動,但保持垂直方向。 我也不想刪除滾動條並使用換行。 我只想擺脫總是向右滾動的控制台。

我已經嘗試過自己設置插入符號的位置,但是我無法真正弄清楚應該在哪里放置。 我最后一次嘗試在標記文本時導致崩潰,因為我將代碼放入了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();
    }
  }
});

好的,實際上我發現它不起作用,因為Caret也在我的Console類中設置,因此被覆蓋了。

對於所有感興趣的人,這對我來說似乎是一個很好的方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM