2016-10-26 2 views
0

JScrollPaneの中にパネルがあり、データがサービスから受信されるとパネルにコンポーネントを動的に取り込みます。パネルはGridBagLayoutを使用します(しかし、それは無関係です)。サービスから戻ってくるレコードごとに、いくつかのコンポーネントを動的に作成し、それらをパネルの下部に追加します。すべてが正常に動作しますが、問題はここに示すように、レコードごとに作成されるJTextAreaには、最後に追加されたJTextAreaのを下にスクロールして表示するメイン側JScrollPaneを強制ということです:JTextAreaは、親のJScrollPaneをスクロールダウンさせます。

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); 

を助けていないのですか?私はJTextAreaをJLabelに置き換えようとしましたが、それはうまくいきましたが、JLabelをテキストとしてラップすることはできません。どんなアイデアも高く評価されます。あなたがコンポーネントを追加する前に

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

今すぐスクロールペインが元の位置にリセットする必要があります。

答えて

2

あなたのような何かを行うことができます。

+0

ありがとうございます。私は前にその解決法を試してみたが、うまくいかなかった。私は、SwingUtilities.invokeLater()呼び出しの中でsetViewPositionをラップするときに、それを動作させることができました。 –

関連する問題