JTextArea继续将主面板滚动到顶部

时间:2013-03-11 11:32:41

标签: java swing jtextarea

我已按如下方式定义了一个JTextArea:

JTextArea textArea = new JTextArea();
textArea.setText("Some text");
textArea.setEditable(true);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);

JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.getVerticalScrollBar().setAutoscrolls(false);

现在这个组件是已经添加到主JPanel的许多组件之一,其定义如下:

JPanel panel = new JPanel();
panel.setName("Some name");

JScrollPane scrollPane = new JScrollPane();
scrollPane.setName("Some name");
scrollPane.getViewport().add(panel);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.getVerticalScrollBar().setAutoscrolls(false);

现在,JTextArea组件出现在主面板底部附近,部分隐藏,因此您必须向下滚动才能看到所有内容。但我得到的问题是,当我点击它时,主面板会自动滚动回到顶部,再次隐藏我的大部分JTextArea组件。因此,点击它之后,用户必须再次向下滚动才能输入内容。

但我无法理解为什么会这样做。使用JTextArea有问题吗?如果我使用JTextField,则不会发生问题。

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

我认为,将scrollPane.getViewport().add(panel)替换为scrollPane.getViewport().setView(panel)将解决问题。