2

我已经定义了一个 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 则不会出现问题。

任何帮助将不胜感激!!

4

1 回答 1

0

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

于 2014-02-01T15:18:45.257 回答