Java - 如果setEditable(false),则无法向下滚动JTextArea

时间:2014-05-02 13:29:35

标签: java swing

我在JTextArea内有一个setEditable(false)不可编辑(JScrollPane),我想让它自动滚动,以便在文本添加到该区域时显示最后一行(使用append())。

我已经尝试过移动插入符号,选择所有文本,并使用DefaultCaret但我无法滚动它。有没有办法实现这个目标?

这是我尝试过的: https://gist.github.com/Greffin28/f38bb9c9ad8281de00e2

2 个答案:

答案 0 :(得分:1)

始终将JTextArea括在JScrollPanel中,否则当行数不超过窗口高度时,它将无效。

要设置滚动位置,请阅读此帖子How to adjust position of scroll in the scrollpane

示例代码:

    JTextArea textArea = new JTextArea();
    textArea.setEditable(false);
    textArea.setText("abc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\n");

    JScrollPane scrollPane = new JScrollPane(textArea);
    // now add scrollPane  to your desired panel.

enter image description here

答案 1 :(得分:0)

使用jTextArea.setEnabled(false);