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 に追加された多数のコンポーネントの 1 つです。

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 に答える