java - JTextArea 强制父级 JScrollPane 向下滚动

标签 java swing focus jscrollpane jtextarea

我在 JScrollPane 中有一个面板,当从服务接收到数据时,我用组件动态填充该面板。该面板使用 GridBagLayout (但这应该是无关紧要的)。对于从服务返回的每条记录,我动态创建几个组件并将它们附加到面板的底部。一切工作正常,但问题是为每个记录创建的 JTextArea 强制主 JScrollPane 向下滚动并显示最后添加的 JTextArea,如下所示:

scroll pane forced down

我尝试禁用所有我能想到的来简化 JTextArea 的功能,但仍然没有帮助

JTextArea descriptionArea = new JTextArea(project.getDescription().replace("<br>", "\n"));
descriptionArea.setEditable(false);
descriptionArea.setFont(thumbnailLabel.getFont());
descriptionArea.setLineWrap(true);
descriptionArea.setWrapStyleWord(true);    
descriptionArea.setFocusable(false);
descriptionArea.setRequestFocusEnabled(false);    
DefaultCaret caret = (DefaultCaret) descriptionArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);

如何防止滚动条移动?我尝试用 JLabel 替换 JTextArea ,这可行,但我无法让 JLabel 对文本进行自动换行。任何想法都将受到高度赞赏。

最佳答案

你可以这样做:

Point p = srcollPane.getViewport().getViewPostition();
// add the components to the panel in the viewport of the scrollpane
scrollpane.getViewport().setViewPosition( p );

现在,在添加组件之前,滚动 Pane 应该重置到其原始位置。

关于java - JTextArea 强制父级 JScrollPane 向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263912/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - 粗体标题边框

Java - 如何仅更改 JLabel 的一部分字体/添加边框

c# - 如何让DataGrid整体单站关注方向键行选择遍历?

java - 是否可以在 java 中的一个方法中返回两个 ArrayList 值?

java - UTF8编码问题

java - JLabel 仅显示 initComponents() 是否被删除

css - 元素不失去焦点

jQuery:如何知道表格行何时失去焦点?

Java Swing - mouseMoved 事件触发缓慢