JScrollPaneの中にパネルがあり、データがサービスから受信されるとパネルにコンポーネントを動的に取り込みます。パネルはGridBagLayoutを使用します(しかし、それは無関係です)。サービスから戻ってくるレコードごとに、いくつかのコンポーネントを動的に作成し、それらをパネルの下部に追加します。すべてが正常に動作しますが、問題はここに示すように、レコードごとに作成されるJTextAreaには、最後に追加されたJTextAreaのを下にスクロールして表示するメイン側JScrollPaneを強制ということです:JTextAreaは、親のJScrollPaneをスクロールダウンさせます。
私は私ができるすべてを無効にしてみました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);
を助けていないのですか?私はJTextAreaをJLabelに置き換えようとしましたが、それはうまくいきましたが、JLabelをテキストとしてラップすることはできません。どんなアイデアも高く評価されます。あなたがコンポーネントを追加する前に
Point p = srcollPane.getViewport().getViewPostition();
// add the components to the panel in the viewport of the scrollpane
scrollpane.getViewport().setViewPosition(p);
今すぐスクロールペインが元の位置にリセットする必要があります。
ありがとうございます。私は前にその解決法を試してみたが、うまくいかなかった。私は、SwingUtilities.invokeLater()呼び出しの中でsetViewPositionをラップするときに、それを動作させることができました。 –