2017-07-13 37 views
0

透明な背景(またはほぼ透明なRGBA:0、0、0、150)のJPanelを含むScrollPaneを作成しようとしています。問題は、JViewPortの再描画をスクロールダウンするときです。しかし、それは数ミリ秒後に起こる親を再描画しません。だから数ミリ秒の間、私はスクロールビュー内のスクロールバーのすべてのボタンをスクロールビュー内に見ます。そのための修正はありますか?または、画面全体を再描画するために、Viewportの再描画メソッドをオーバーライドすることは可能ですか?Java Swing ViewPortスクロールラグ

マイコード:透明な背景と

scrollView = new JScrollPane(content); 
    scrollView.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); 
    scrollView.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
    scrollView.getVerticalScrollBar().setUI(new ScrollBar()); 
    scrollView.getVerticalScrollBar().setUnitIncrement(1); 
    scrollView.setBorder(null); 
    scrollView.setViewportBorder(null); 
    scrollView.setBounds(20, 20, W - 40, H - 40); 
    scrollView.setPreferredSize(new Dimension(W - 40, H - 40)); 
    add(scrollView, 0); 
    parentScreen.repaint(); 

答えて

1

のJPanel(RGBAであるか、ほぼ透明:0、0、0、150)。

スイングは透明コンポーネントを正しくペイントしないため、この問題が発生する可能性があります。スウィングは、コンポーネントが不透明または非不透明であることを期待しています(この場合、親コンポーネントが最初に塗装され、塗装のアーティファクトが取り除かれます)。

詳しくは、Backgrounds With Transparencyを参照してください。